From c20b720fcc2037df2474d8c98fa73772fddd81fa Mon Sep 17 00:00:00 2001
From: Rochet2 <tqbattlenet@gmail.com>
Date: Wed, 7 Dec 2016 10:52:57 +0200
Subject: [PATCH 001/113] Implement oauth2

---
 pom.xml                                       |   5 +
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |   4 +
 .../TmcServerCommunicationTaskFactory.java    | 151 +++++++++++-------
 .../tmc/core/communication/oauth2/Oauth.java  |  59 +++++++
 .../core/communication/oauth2/OauthFlow.java  |  21 +++
 .../communication/oauth2/PasswordFlow.java    |  48 ++++++
 .../tmc/core/configuration/TmcSettings.java   |   6 +
 .../cs/tmc/core/holders/TmcOauthHolder.java   |  23 +++
 .../cs/tmc/core/commands/RunTestsTest.java    |   4 +
 .../core/communication/oauth2/OauthTest.java  |  64 ++++++++
 .../tmc/core/holders/TmcOauthHolderTest.java  |  37 +++++
 11 files changed, 366 insertions(+), 56 deletions(-)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthFlow.java
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/PasswordFlow.java
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolder.java
 create mode 100644 src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
 create mode 100644 src/test/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolderTest.java

diff --git a/pom.xml b/pom.xml
index 8c02cb3c..16186961 100644
--- a/pom.xml
+++ b/pom.xml
@@ -402,6 +402,11 @@
             <artifactId>tmc-junit-runner</artifactId>
             <version>0.2.5</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.oltu.oauth2</groupId>
+            <artifactId>org.apache.oltu.oauth2.client</artifactId>
+            <version>1.0.2</version>
+        </dependency>
     </dependencies>
 
     <profiles>
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 9173f73c..b65d04e9 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -17,6 +17,8 @@
 import fi.helsinki.cs.tmc.core.commands.SendSpywareEvents;
 import fi.helsinki.cs.tmc.core.commands.Submit;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
+import fi.helsinki.cs.tmc.core.communication.oauth2.PasswordFlow;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
@@ -25,6 +27,7 @@
 import fi.helsinki.cs.tmc.core.domain.submission.FeedbackAnswer;
 import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
+import fi.helsinki.cs.tmc.core.holders.TmcOauthHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utilities.ExceptionTrackingCallable;
 import fi.helsinki.cs.tmc.langs.abstraction.ValidationResult;
@@ -72,6 +75,7 @@ public TmcCore() {}
     public TmcCore(TmcSettings settings, TaskExecutor tmcLangs) {
         TmcSettingsHolder.set(settings);
         TmcLangsHolder.set(tmcLangs);
+        TmcOauthHolder.set(new Oauth(new PasswordFlow(settings)));
     }
 
     public Callable<Void> sendDiagnostics(
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 02d9fcd7..ad8d703d 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -2,6 +2,7 @@
 
 import fi.helsinki.cs.tmc.core.communication.http.HttpTasks;
 import fi.helsinki.cs.tmc.core.communication.http.UriUtils;
+import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.communication.serialization.ByteArrayGsonSerializer;
 import fi.helsinki.cs.tmc.core.communication.serialization.CourseInfoParser;
 import fi.helsinki.cs.tmc.core.communication.serialization.CourseListParser;
@@ -13,6 +14,7 @@
 import fi.helsinki.cs.tmc.core.domain.submission.FeedbackAnswer;
 import fi.helsinki.cs.tmc.core.exceptions.FailedHttpResponseException;
 import fi.helsinki.cs.tmc.core.exceptions.ObsoleteClientException;
+import fi.helsinki.cs.tmc.core.holders.TmcOauthHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utilities.JsonMaker;
 import fi.helsinki.cs.tmc.core.utilities.JsonMakerGsonSerializer;
@@ -23,6 +25,8 @@
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.google.gson.reflect.TypeToken;
+import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
+import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -35,6 +39,8 @@
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Callable;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import java.util.zip.GZIPOutputStream;
 
 /**
@@ -43,27 +49,33 @@
 public class TmcServerCommunicationTaskFactory {
 
     public static final int API_VERSION = 7;
+    private static final Logger LOG = Logger.getLogger(
+            TmcServerCommunicationTaskFactory.class.getName());
 
     private TmcSettings settings;
+    private Oauth oauth;
     private CourseListParser courseListParser;
     private CourseInfoParser courseInfoParser;
     private ReviewListParser reviewListParser;
     private String clientVersion;
 
     public TmcServerCommunicationTaskFactory() {
-        this(TmcSettingsHolder.get());
+        this(TmcSettingsHolder.get(), TmcOauthHolder.get());
     }
 
-    public TmcServerCommunicationTaskFactory(TmcSettings settings) {
-        this(settings, new CourseListParser(), new CourseInfoParser(), new ReviewListParser());
+    public TmcServerCommunicationTaskFactory(TmcSettings settings, Oauth oauth) {
+        this(settings, oauth, new CourseListParser(),
+                new CourseInfoParser(), new ReviewListParser());
     }
 
     public TmcServerCommunicationTaskFactory(
             TmcSettings settings,
+            Oauth oauth,
             CourseListParser courseListParser,
             CourseInfoParser courseInfoParser,
             ReviewListParser reviewListParser) {
         this.settings = settings;
+        this.oauth = oauth;
         this.courseListParser = courseListParser;
         this.courseInfoParser = courseInfoParser;
         this.reviewListParser = reviewListParser;
@@ -78,7 +90,33 @@ public void setSettings(TmcSettings settings) {
         this.settings = settings;
     }
 
-    private URI getCourseListUrl() {
+    /**
+     * Returns a Callable that calls the given Callable.
+     *
+     * <p>
+     * If the call fails once, the oauth token is refreshed and the call is done again.</p>
+     *
+     * @param <T> return type of the callable
+     * @param callable Callable to be wrapped
+     * @return The given Callable wrapped in another Callable
+     */
+    private <T> Callable<T> wrapWithTokenRefresh(final Callable<T> callable) {
+        return new Callable<T>() {
+            @Override
+            public T call() throws Exception {
+                try {
+                    return callable.call();
+                } catch (FailedHttpResponseException e) {
+                    LOG.log(Level.INFO,
+                            "Callable call failed, refreshing oauth token and trying again");
+                    oauth.refreshToken();
+                    return callable.call();
+                }
+            }
+        };
+    }
+
+    private URI getCourseListUrl() throws OAuthSystemException, OAuthProblemException {
         String serverAddress = settings.getServerAddress();
         String url;
         if (serverAddress.endsWith("/")) {
@@ -89,10 +127,12 @@ private URI getCourseListUrl() {
         return addApiCallQueryParameters(URI.create(url));
     }
 
-    private URI addApiCallQueryParameters(URI url) {
+    private URI addApiCallQueryParameters(URI url) throws OAuthSystemException,
+            OAuthProblemException {
         url = UriUtils.withQueryParam(url, "api_version", "" + API_VERSION);
         url = UriUtils.withQueryParam(url, "client", settings.clientName());
         url = UriUtils.withQueryParam(url, "client_version", clientVersion);
+        url = UriUtils.withQueryParam(url, "access_token", oauth.getToken());
         return url;
     }
 
@@ -113,11 +153,11 @@ public boolean needsOnlyPassword() {
     }
 
     public Callable<List<Course>> getDownloadingCourseListTask() {
-        final Callable<String> download = createHttpTasks().getForText(getCourseListUrl());
-        return new Callable<List<Course>>() {
+        return wrapWithTokenRefresh(new Callable<List<Course>>() {
             @Override
             public List<Course> call() throws Exception {
                 try {
+                    Callable<String> download = createHttpTasks().getForText(getCourseListUrl());
                     String text = download.call();
                     return courseListParser.parseFromJson(text);
                 } catch (FailedHttpResponseException ex) {
@@ -125,16 +165,16 @@ public List<Course> call() throws Exception {
                 }
                 //TODO: Cancellable?
             }
-        };
+        });
     }
 
-    public Callable<Course> getFullCourseInfoTask(Course courseStub) {
-        URI url = addApiCallQueryParameters(courseStub.getDetailsUrl());
-        final Callable<String> download = createHttpTasks().getForText(url);
-        return new Callable<Course>() {
+    public Callable<Course> getFullCourseInfoTask(final Course courseStub) {
+        return wrapWithTokenRefresh(new Callable<Course>() {
             @Override
             public Course call() throws Exception {
                 try {
+                    URI url = addApiCallQueryParameters(courseStub.getDetailsUrl());
+                    final Callable<String> download = createHttpTasks().getForText(url);
                     String text = download.call();
                     return courseInfoParser.parseFromJson(text);
                 } catch (FailedHttpResponseException ex) {
@@ -143,17 +183,17 @@ public Course call() throws Exception {
             }
 
             //TODO: Cancellable?
-        };
+        });
     }
 
-    public Callable<Void> getUnlockingTask(Course course) {
-        Map<String, String> params = Collections.emptyMap();
-        final Callable<String> download =
-                createHttpTasks().postForText(getUnlockUrl(course), params);
-        return new Callable<Void>() {
+    public Callable<Void> getUnlockingTask(final Course course) {
+        final Map<String, String> params = Collections.emptyMap();
+        return wrapWithTokenRefresh(new Callable<Void>() {
             @Override
             public Void call() throws Exception {
                 try {
+                    final Callable<String> download = createHttpTasks()
+                            .postForText(getUnlockUrl(course), params);
                     download.call();
                     return null;
                 } catch (FailedHttpResponseException ex) {
@@ -162,10 +202,10 @@ public Void call() throws Exception {
             }
 
             //TODO: Cancellable?
-        };
+        });
     }
 
-    private URI getUnlockUrl(Course course) {
+    private URI getUnlockUrl(Course course) throws OAuthSystemException, OAuthProblemException {
         return addApiCallQueryParameters(course.getUnlockUrl());
     }
 
@@ -181,23 +221,21 @@ public Callable<byte[]> getDownloadingExerciseSolutionZipTask(Exercise exercise)
 
     public Callable<SubmissionResponse> getSubmittingExerciseTask(
             final Exercise exercise, final byte[] sourceZip, Map<String, String> extraParams) {
-        final URI submitUrl = addApiCallQueryParameters(exercise.getReturnUrl());
 
-        Map<String, String> params = new LinkedHashMap<>();
+        final Map<String, String> params = new LinkedHashMap<>();
         params.put("client_time", "" + (System.currentTimeMillis() / 1000L));
         params.put("client_nanotime", "" + System.nanoTime());
         params.putAll(extraParams);
 
-        final Callable<String> upload =
-                createHttpTasks()
-                        .uploadFileForTextDownload(
-                                submitUrl, params, "submission[file]", sourceZip);
-
-        return new Callable<SubmissionResponse>() {
+        return wrapWithTokenRefresh(new Callable<SubmissionResponse>() {
             @Override
             public SubmissionResponse call() throws Exception {
                 String response;
                 try {
+                    final URI submitUrl = addApiCallQueryParameters(exercise.getReturnUrl());
+                    final Callable<String> upload = createHttpTasks()
+                            .uploadFileForTextDownload(submitUrl, params,
+                                    "submission[file]", sourceZip);
                     response = upload.call();
                 } catch (FailedHttpResponseException ex) {
                     return checkForObsoleteClient(ex);
@@ -222,7 +260,7 @@ public SubmissionResponse call() throws Exception {
             }
 
             //TODO: Cancellable?
-        };
+        });
     }
 
     public static class SubmissionResponse {
@@ -240,13 +278,13 @@ public Callable<String> getSubmissionFetchTask(URI submissionUrl) {
         return createHttpTasks().getForText(submissionUrl);
     }
 
-    public Callable<List<Review>> getDownloadingReviewListTask(Course course) {
-        URI url = addApiCallQueryParameters(course.getReviewsUrl());
-        final Callable<String> download = createHttpTasks().getForText(url);
-        return new Callable<List<Review>>() {
+    public Callable<List<Review>> getDownloadingReviewListTask(final Course course) {
+        return wrapWithTokenRefresh(new Callable<List<Review>>() {
             @Override
             public List<Review> call() throws Exception {
                 try {
+                    URI url = addApiCallQueryParameters(course.getReviewsUrl());
+                    final Callable<String> download = createHttpTasks().getForText(url);
                     String text = download.call();
                     return reviewListParser.parseFromJson(text);
                 } catch (FailedHttpResponseException ex) {
@@ -255,12 +293,11 @@ public List<Review> call() throws Exception {
             }
 
             //TODO: Cancellable?
-        };
+        });
     }
 
-    public Callable<Void> getMarkingReviewAsReadTask(Review review, boolean read) {
-        URI url = addApiCallQueryParameters(URI.create(review.getUpdateUrl() + ".json"));
-        Map<String, String> params = new HashMap<>();
+    public Callable<Void> getMarkingReviewAsReadTask(final Review review, boolean read) {
+        final Map<String, String> params = new HashMap<>();
         params.put("_method", "put");
         if (read) {
             params.put("mark_as_read", "1");
@@ -268,22 +305,22 @@ public Callable<Void> getMarkingReviewAsReadTask(Review review, boolean read) {
             params.put("mark_as_unread", "1");
         }
 
-        final Callable<String> task = createHttpTasks().postForText(url, params);
-        return new Callable<Void>() {
+        return wrapWithTokenRefresh(new Callable<Void>() {
             @Override
             public Void call() throws Exception {
+                URI url = addApiCallQueryParameters(URI.create(review.getUpdateUrl() + ".json"));
+                final Callable<String> task = createHttpTasks().postForText(url, params);
                 task.call();
                 return null;
             }
 
             //TODO: Cancellable?
-        };
+        });
     }
 
-    public Callable<String> getFeedbackAnsweringJob(URI answerUrl, List<FeedbackAnswer> answers) {
-        final URI submitUrl = addApiCallQueryParameters(answerUrl);
-
-        Map<String, String> params = new HashMap<>();
+    public Callable<String> getFeedbackAnsweringJob(final URI answerUrl,
+            List<FeedbackAnswer> answers) {
+        final Map<String, String> params = new HashMap<>();
         for (int i = 0; i < answers.size(); ++i) {
             String keyPrefix = "answers[" + i + "]";
             FeedbackAnswer answer = answers.get(i);
@@ -291,12 +328,13 @@ public Callable<String> getFeedbackAnsweringJob(URI answerUrl, List<FeedbackAnsw
             params.put(keyPrefix + "[answer]", answer.getAnswer());
         }
 
-        final Callable<String> upload = createHttpTasks().postForText(submitUrl, params);
-
-        return new Callable<String>() {
+        return wrapWithTokenRefresh(new Callable<String>() {
             @Override
             public String call() throws Exception {
                 try {
+                    final URI submitUrl = addApiCallQueryParameters(answerUrl);
+                    final Callable<String> upload = createHttpTasks()
+                            .postForText(submitUrl, params);
                     return upload.call();
                 } catch (FailedHttpResponseException ex) {
                     return checkForObsoleteClient(ex);
@@ -304,35 +342,36 @@ public String call() throws Exception {
             }
 
             //TODO: Cancellable?
-        };
+        });
     }
 
-    public Callable<Object> getSendEventLogJob(URI spywareServerUrl, List<LoggableEvent> events) {
+    public Callable<Object> getSendEventLogJob(final URI spywareServerUrl,
+            List<LoggableEvent> events) {
 
-        Map<String, String> extraHeaders = new LinkedHashMap<>();
+        final Map<String, String> extraHeaders = new LinkedHashMap<>();
         extraHeaders.put("X-Tmc-Version", "1");
         extraHeaders.put("X-Tmc-Username", settings.getUsername());
         extraHeaders.put("X-Tmc-Password", settings.getPassword());
 
-        byte[] data;
+        final byte[] data;
         try {
             data = eventListToPostBody(events);
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
 
-        URI url = addApiCallQueryParameters(spywareServerUrl);
-        final Callable<String> upload = createHttpTasks().rawPostForText(url, data, extraHeaders);
-
-        return new Callable<Object>() {
+        return wrapWithTokenRefresh(new Callable<Object>() {
             @Override
             public Object call() throws Exception {
+                URI url = addApiCallQueryParameters(spywareServerUrl);
+                final Callable<String> upload = createHttpTasks()
+                        .rawPostForText(url, data, extraHeaders);
                 upload.call();
                 return null;
             }
 
             //TODO: Cancellable?
-        };
+        });
     }
 
     private byte[] eventListToPostBody(List<LoggableEvent> events) throws IOException {
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
new file mode 100644
index 00000000..941c6dfa
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
@@ -0,0 +1,59 @@
+package fi.helsinki.cs.tmc.core.communication.oauth2;
+
+import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
+import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
+
+public class Oauth {
+
+    private final OauthFlow flow;
+    private String token;
+
+    public Oauth(OauthFlow flow) {
+        this.flow = flow;
+    }
+
+    /**
+     * Returns the oauth token.
+     *
+     * <p>
+     * Gets the token from cache or uses the known flow to fetch the it.</p>
+     *
+     * @return oauth token
+     * @throws org.apache.oltu.oauth2.common.exception.OAuthSystemException an error occurred with
+     *     getting token
+     * @throws org.apache.oltu.oauth2.common.exception.OAuthProblemException an error occurred with
+     *     getting token
+     */
+    public String getToken() throws OAuthSystemException, OAuthProblemException {
+        if (!hasToken()) {
+            token = flow.getToken();
+        }
+        return token;
+    }
+
+    /**
+     * Returns true if the token is already known.
+     *
+     * @return has token
+     */
+    public boolean hasToken() {
+        return token != null;
+    }
+
+    /**
+     * Returns the oauth token.
+     *
+     * <p>
+     * Uses the known flow to fetch the token and caches it.</p>
+     *
+     * @return oauth token
+     * @throws org.apache.oltu.oauth2.common.exception.OAuthSystemException an error occurred with
+     *     getting token
+     * @throws org.apache.oltu.oauth2.common.exception.OAuthProblemException an error occurred with
+     *     getting token
+     */
+    public String refreshToken() throws OAuthSystemException, OAuthProblemException {
+        token = flow.getToken();
+        return token;
+    }
+}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthFlow.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthFlow.java
new file mode 100644
index 00000000..047552e0
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthFlow.java
@@ -0,0 +1,21 @@
+package fi.helsinki.cs.tmc.core.communication.oauth2;
+
+import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
+import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
+
+/**
+ * An interface for an oauth flow.
+ */
+public interface OauthFlow {
+
+    /**
+     * Uses the flow to get a token from the server.
+     *
+     * @return a oauth token
+     * @throws org.apache.oltu.oauth2.common.exception.OAuthSystemException an error occurred with
+     *     getting token
+     * @throws org.apache.oltu.oauth2.common.exception.OAuthProblemException an error occurred with
+     *     getting token
+     */
+    public String getToken() throws OAuthSystemException, OAuthProblemException;
+}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/PasswordFlow.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/PasswordFlow.java
new file mode 100644
index 00000000..4311440c
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/PasswordFlow.java
@@ -0,0 +1,48 @@
+package fi.helsinki.cs.tmc.core.communication.oauth2;
+
+import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+
+import org.apache.oltu.oauth2.client.OAuthClient;
+import org.apache.oltu.oauth2.client.URLConnectionClient;
+import org.apache.oltu.oauth2.client.request.OAuthClientRequest;
+import org.apache.oltu.oauth2.client.response.OAuthJSONAccessTokenResponse;
+import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
+import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
+import org.apache.oltu.oauth2.common.message.types.GrantType;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * A password flow for oauth.
+ *
+ * <p>
+ * Password flow fetches the token from server by using username and password</p>
+ */
+public class PasswordFlow implements OauthFlow {
+
+    private static final Logger LOG = Logger.getLogger(PasswordFlow.class.getName());
+    private final TmcSettings settings;
+
+    public PasswordFlow(TmcSettings settings) {
+        this.settings = settings;
+    }
+
+    @Override
+    public String getToken() throws OAuthSystemException, OAuthProblemException {
+        LOG.log(Level.INFO, "Fetching new oauth token from server");
+        OAuthClientRequest request = OAuthClientRequest
+                .tokenLocation(settings.getOauthTokenUrl())
+                .setGrantType(GrantType.PASSWORD)
+                .setClientId(settings.getOauthApplicationId())
+                .setClientSecret(settings.getOauthSecret())
+                .setUsername(settings.getUsername())
+                .setPassword(settings.getPassword())
+                .buildQueryMessage();
+        OAuthClient client = new OAuthClient(new URLConnectionClient());
+        String token = client.accessToken(request, OAuthJSONAccessTokenResponse.class)
+                .getAccessToken();
+        return token;
+    }
+
+}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
index fc688973..8f76c59e 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
@@ -58,4 +58,10 @@ public interface TmcSettings {
     String hostProgramVersion();
 
     boolean getSendDiagnostics();
+
+    String getOauthTokenUrl();
+
+    String getOauthApplicationId();
+
+    String getOauthSecret();
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolder.java b/src/main/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolder.java
new file mode 100644
index 00000000..9e86c872
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolder.java
@@ -0,0 +1,23 @@
+package fi.helsinki.cs.tmc.core.holders;
+
+import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
+import fi.helsinki.cs.tmc.core.exceptions.UninitializedHolderException;
+
+public final class TmcOauthHolder {
+
+    private static Oauth oauth;
+
+    private TmcOauthHolder() {
+    }
+
+    public static synchronized Oauth get() {
+        if (TmcOauthHolder.oauth == null) {
+            throw new UninitializedHolderException();
+        }
+        return TmcOauthHolder.oauth;
+    }
+
+    public static synchronized void set(Oauth oauth) {
+        TmcOauthHolder.oauth = oauth;
+    }
+}
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java
index d2de1915..777f5af3 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java
@@ -6,11 +6,14 @@
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
+import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
+import fi.helsinki.cs.tmc.core.communication.oauth2.PasswordFlow;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
+import fi.helsinki.cs.tmc.core.holders.TmcOauthHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utils.TestUtils;
 import fi.helsinki.cs.tmc.langs.domain.RunResult.Status;
@@ -48,6 +51,7 @@ public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
 
         TmcSettingsHolder.set(settings);
+        TmcOauthHolder.set(new Oauth(new PasswordFlow(settings)));
         langs = spy(new TaskExecutorImpl());
         TmcLangsHolder.set(langs);
         project = TestUtils.getProject(RunTestsTest.class, "arith_funcs");
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
new file mode 100644
index 00000000..b3f13da7
--- /dev/null
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
@@ -0,0 +1,64 @@
+package fi.helsinki.cs.tmc.core.communication.oauth2;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
+import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+public class OauthTest {
+
+    private Oauth oauth;
+
+    @Mock
+    private OauthFlow flow;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        this.oauth = new Oauth(flow);
+        when(flow.getToken()).thenReturn("one", "two");
+    }
+
+    @Test
+    public void hasNoTokenWhenInitialized() throws Exception {
+        assertFalse(oauth.hasToken());
+        verify(flow, times(0)).getToken();
+    }
+
+    @Test
+    public void hasTokenWhenFetchedAndCallsFlow() {
+        try {
+            String token = oauth.getToken();
+            verify(flow).getToken();
+            assertTrue(oauth.hasToken());
+            assertEquals("one", token);
+        } catch (OAuthSystemException | OAuthProblemException ex) {
+            fail("Got exception: " + ex.toString());
+        }
+    }
+
+    @Test
+    public void refreshTokenCallsFlowAndGetsNewToken() {
+        try {
+            String token = oauth.getToken();
+            assertEquals("one", token);
+            verify(flow, times(1)).getToken();
+            String token2 = oauth.refreshToken();
+            assertEquals("two", token2);
+            verify(flow, times(2)).getToken();
+            assertTrue(oauth.hasToken());
+        } catch (OAuthSystemException | OAuthProblemException ex) {
+            fail("Got exception: " + ex.toString());
+        }
+    }
+}
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolderTest.java b/src/test/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolderTest.java
new file mode 100644
index 00000000..f1ad1472
--- /dev/null
+++ b/src/test/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolderTest.java
@@ -0,0 +1,37 @@
+package fi.helsinki.cs.tmc.core.holders;
+
+import static org.junit.Assert.assertEquals;
+
+import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
+import fi.helsinki.cs.tmc.core.exceptions.UninitializedHolderException;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+public class TmcOauthHolderTest {
+
+    private TmcOauthHolder holder;
+
+    @Mock
+    private Oauth oauth;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+    }
+
+    @Test(expected = UninitializedHolderException.class)
+    public void throwsIfNotInitialized() {
+        holder.set(null);
+        holder.get();
+    }
+
+    @Test
+    public void returnsCorrectAfterSet() {
+        holder.set(oauth);
+        assertEquals(oauth, holder.get());
+    }
+}

From c544cda7ea56253498ad83fd2784e39f7ac38489 Mon Sep 17 00:00:00 2001
From: Rochet2 <tqbattlenet@gmail.com>
Date: Tue, 13 Dec 2016 12:57:23 +0200
Subject: [PATCH 002/113] Remove holder, implement getInstance

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |  3 +-
 .../TmcServerCommunicationTaskFactory.java    |  3 +-
 .../tmc/core/communication/oauth2/Oauth.java  | 34 +++++++++++++++--
 .../cs/tmc/core/holders/TmcOauthHolder.java   | 23 ------------
 .../cs/tmc/core/commands/RunTestsTest.java    |  2 -
 .../core/communication/oauth2/OauthMock.java  |  7 ++++
 .../core/communication/oauth2/OauthTest.java  |  3 +-
 .../tmc/core/holders/TmcOauthHolderTest.java  | 37 -------------------
 8 files changed, 42 insertions(+), 70 deletions(-)
 delete mode 100644 src/main/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolder.java
 create mode 100644 src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthMock.java
 delete mode 100644 src/test/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolderTest.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index b65d04e9..c86a1ac9 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -27,7 +27,6 @@
 import fi.helsinki.cs.tmc.core.domain.submission.FeedbackAnswer;
 import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
-import fi.helsinki.cs.tmc.core.holders.TmcOauthHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utilities.ExceptionTrackingCallable;
 import fi.helsinki.cs.tmc.langs.abstraction.ValidationResult;
@@ -75,7 +74,7 @@ public TmcCore() {}
     public TmcCore(TmcSettings settings, TaskExecutor tmcLangs) {
         TmcSettingsHolder.set(settings);
         TmcLangsHolder.set(tmcLangs);
-        TmcOauthHolder.set(new Oauth(new PasswordFlow(settings)));
+        Oauth.getInstance().setFlow(new PasswordFlow(settings));
     }
 
     public Callable<Void> sendDiagnostics(
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index ad8d703d..d3a2eb9a 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -14,7 +14,6 @@
 import fi.helsinki.cs.tmc.core.domain.submission.FeedbackAnswer;
 import fi.helsinki.cs.tmc.core.exceptions.FailedHttpResponseException;
 import fi.helsinki.cs.tmc.core.exceptions.ObsoleteClientException;
-import fi.helsinki.cs.tmc.core.holders.TmcOauthHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utilities.JsonMaker;
 import fi.helsinki.cs.tmc.core.utilities.JsonMakerGsonSerializer;
@@ -60,7 +59,7 @@ public class TmcServerCommunicationTaskFactory {
     private String clientVersion;
 
     public TmcServerCommunicationTaskFactory() {
-        this(TmcSettingsHolder.get(), TmcOauthHolder.get());
+        this(TmcSettingsHolder.get(), Oauth.getInstance());
     }
 
     public TmcServerCommunicationTaskFactory(TmcSettings settings, Oauth oauth) {
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
index 941c6dfa..079af74c 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
@@ -4,12 +4,25 @@
 import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
 
 public class Oauth {
+    
+    private static Oauth oauth;
 
-    private final OauthFlow flow;
+    private OauthFlow flow;
     private String token;
 
-    public Oauth(OauthFlow flow) {
-        this.flow = flow;
+    /**
+     * Returns the Oauth instance.
+     * 
+     * @return single oauth instance
+     */
+    public static synchronized Oauth getInstance() {
+        if (oauth == null) {
+            oauth = new Oauth();
+        }
+        return oauth;
+    }
+    
+    protected Oauth() {
     }
 
     /**
@@ -25,6 +38,9 @@ public Oauth(OauthFlow flow) {
      *     getting token
      */
     public String getToken() throws OAuthSystemException, OAuthProblemException {
+        if (flow == null) {
+            throw new OAuthSystemException("Oauth flow is null");
+        }
         if (!hasToken()) {
             token = flow.getToken();
         }
@@ -53,7 +69,19 @@ public boolean hasToken() {
      *     getting token
      */
     public String refreshToken() throws OAuthSystemException, OAuthProblemException {
+        if (flow == null) {
+            throw new OAuthSystemException("Oauth flow is null");
+        }
         token = flow.getToken();
         return token;
     }
+    
+    /**
+     * Changes the oauth flow.
+     * 
+     * @param authflow an oauth flow
+     */
+    public void setFlow(OauthFlow authflow) {
+        this.flow = authflow;
+    }
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolder.java b/src/main/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolder.java
deleted file mode 100644
index 9e86c872..00000000
--- a/src/main/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolder.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package fi.helsinki.cs.tmc.core.holders;
-
-import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
-import fi.helsinki.cs.tmc.core.exceptions.UninitializedHolderException;
-
-public final class TmcOauthHolder {
-
-    private static Oauth oauth;
-
-    private TmcOauthHolder() {
-    }
-
-    public static synchronized Oauth get() {
-        if (TmcOauthHolder.oauth == null) {
-            throw new UninitializedHolderException();
-        }
-        return TmcOauthHolder.oauth;
-    }
-
-    public static synchronized void set(Oauth oauth) {
-        TmcOauthHolder.oauth = oauth;
-    }
-}
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java
index 777f5af3..051d3c1e 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java
@@ -13,7 +13,6 @@
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
-import fi.helsinki.cs.tmc.core.holders.TmcOauthHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utils.TestUtils;
 import fi.helsinki.cs.tmc.langs.domain.RunResult.Status;
@@ -51,7 +50,6 @@ public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
 
         TmcSettingsHolder.set(settings);
-        TmcOauthHolder.set(new Oauth(new PasswordFlow(settings)));
         langs = spy(new TaskExecutorImpl());
         TmcLangsHolder.set(langs);
         project = TestUtils.getProject(RunTestsTest.class, "arith_funcs");
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthMock.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthMock.java
new file mode 100644
index 00000000..05b417c1
--- /dev/null
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthMock.java
@@ -0,0 +1,7 @@
+package fi.helsinki.cs.tmc.core.communication.oauth2;
+
+class OauthMock extends Oauth {
+    public OauthMock() {
+        super();
+    }
+}
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
index b3f13da7..0739d83e 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
@@ -25,8 +25,9 @@ public class OauthTest {
     @Before
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
-        this.oauth = new Oauth(flow);
         when(flow.getToken()).thenReturn("one", "two");
+        this.oauth = new OauthMock();
+        this.oauth.setFlow(flow);
     }
 
     @Test
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolderTest.java b/src/test/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolderTest.java
deleted file mode 100644
index f1ad1472..00000000
--- a/src/test/java/fi/helsinki/cs/tmc/core/holders/TmcOauthHolderTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package fi.helsinki.cs.tmc.core.holders;
-
-import static org.junit.Assert.assertEquals;
-
-import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
-import fi.helsinki.cs.tmc.core.exceptions.UninitializedHolderException;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-public class TmcOauthHolderTest {
-
-    private TmcOauthHolder holder;
-
-    @Mock
-    private Oauth oauth;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-    }
-
-    @Test(expected = UninitializedHolderException.class)
-    public void throwsIfNotInitialized() {
-        holder.set(null);
-        holder.get();
-    }
-
-    @Test
-    public void returnsCorrectAfterSet() {
-        holder.set(oauth);
-        assertEquals(oauth, holder.get());
-    }
-}

From a90a5d950240ffea326db8595d3606ef48eddc59 Mon Sep 17 00:00:00 2001
From: Rochet2 <tqbattlenet@gmail.com>
Date: Wed, 23 Nov 2016 17:11:40 +0200
Subject: [PATCH 003/113] Api-v8 core changes

 This is a combination of 5 commits.
Change tmc-core to new json format and change api version to 8

Remove new line

Remove old oauth implementation remnant

Remove unused class

Add review_url changes
---
 .../communication/TmcServerCommunicationTaskFactory.java   | 2 +-
 .../core/communication/serialization/CourseListParser.java | 7 +------
 .../core/communication/serialization/ReviewListParser.java | 7 +------
 3 files changed, 3 insertions(+), 13 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index d3a2eb9a..1480c5c3 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -47,9 +47,9 @@
  */
 public class TmcServerCommunicationTaskFactory {
 
-    public static final int API_VERSION = 7;
     private static final Logger LOG = Logger.getLogger(
             TmcServerCommunicationTaskFactory.class.getName());
+    public static final int API_VERSION = 8;
 
     private TmcSettings settings;
     private Oauth oauth;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/CourseListParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/CourseListParser.java
index fca7cd9b..e5d92a80 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/CourseListParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/CourseListParser.java
@@ -15,11 +15,6 @@
 
 public class CourseListParser {
 
-    private static class CourseListContainer {
-        public int apiVersion;
-        public Course[] courses;
-    }
-
     private static final Logger logger = LoggerFactory.getLogger(CourseListParser.class);
 
     public List<Course> parseFromJson(String json) {
@@ -35,7 +30,7 @@ public List<Course> parseFromJson(String json) {
                             .registerTypeAdapter(Date.class, new CustomDateDeserializer())
                             .create();
 
-            Course[] courses = gson.fromJson(json, CourseListContainer.class).courses;
+            Course[] courses = gson.fromJson(json, Course[].class);
 
             List<Course> courseList = new ArrayList<>();
             for (Course course : courses) {
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/ReviewListParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/ReviewListParser.java
index ec4cf97a..0293c032 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/ReviewListParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/ReviewListParser.java
@@ -14,11 +14,6 @@
 
 public class ReviewListParser {
 
-    private static class ReviewListContainer {
-        public int apiVersion;
-        public Review[] reviews;
-    }
-
     private static final Logger logger = LoggerFactory.getLogger(ReviewListParser.class);
 
     public List<Review> parseFromJson(String json) {
@@ -36,7 +31,7 @@ public List<Review> parseFromJson(String json) {
                             .registerTypeAdapter(Date.class, new CustomDateDeserializer())
                             .create();
 
-            Review[] reviews = gson.fromJson(json, ReviewListContainer.class).reviews;
+            Review[] reviews = gson.fromJson(json, Review[].class);
             return Arrays.asList(reviews);
         } catch (RuntimeException ex) {
             logger.warn("Failed to parse review list", ex);

From 2f15cc293153c9f4bab6108ca20b8eceda3e3bbd Mon Sep 17 00:00:00 2001
From: Antti <antti.leinonen@helsinki.fi>
Date: Wed, 1 Feb 2017 15:40:23 +0200
Subject: [PATCH 004/113] Update OAuth stuff, exceptions for telling clients
 when to ask for login

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |   8 +-
 .../tmc/core/commands/AuthenticateUser.java   |  32 +++++
 .../TmcServerCommunicationTaskFactory.java    |  62 ++++-----
 .../core/communication/http/HttpTasks.java    |  12 +-
 .../tmc/core/communication/oauth2/Oauth.java  |  80 ++++++-----
 .../core/communication/oauth2/OauthFlow.java  |  21 ---
 .../communication/oauth2/PasswordFlow.java    |  48 -------
 .../tmc/core/configuration/TmcSettings.java   |  11 +-
 .../AuthenticationFailedException.java        |   8 ++
 .../core/exceptions/NotLoggedInException.java |   8 ++
 .../cs/tmc/spyware/EventSendBuffer.java       |  13 +-
 .../core/commands/AuthenticateUserTest.java   |  68 ++++++++++
 .../cs/tmc/core/commands/RunTestsTest.java    |   2 -
 .../core/communication/oauth2/OauthMock.java  |   7 -
 .../core/communication/oauth2/OauthTest.java  |  65 +++++----
 .../tmc/core/spyware/EventSendBufferTest.java |   3 +-
 .../cs/tmc/core/utils/MockSettings.java       | 125 ++++++++++++++++++
 17 files changed, 375 insertions(+), 198 deletions(-)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUser.java
 delete mode 100644 src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthFlow.java
 delete mode 100644 src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/PasswordFlow.java
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/exceptions/AuthenticationFailedException.java
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/exceptions/NotLoggedInException.java
 create mode 100644 src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
 delete mode 100644 src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthMock.java
 create mode 100644 src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index c86a1ac9..7e3a2312 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -1,5 +1,6 @@
 package fi.helsinki.cs.tmc.core;
 
+import fi.helsinki.cs.tmc.core.commands.AuthenticateUser;
 import fi.helsinki.cs.tmc.core.commands.DownloadCompletedExercises;
 import fi.helsinki.cs.tmc.core.commands.DownloadModelSolution;
 import fi.helsinki.cs.tmc.core.commands.DownloadOrUpdateExercises;
@@ -18,7 +19,6 @@
 import fi.helsinki.cs.tmc.core.commands.Submit;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
-import fi.helsinki.cs.tmc.core.communication.oauth2.PasswordFlow;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
@@ -74,7 +74,11 @@ public TmcCore() {}
     public TmcCore(TmcSettings settings, TaskExecutor tmcLangs) {
         TmcSettingsHolder.set(settings);
         TmcLangsHolder.set(tmcLangs);
-        Oauth.getInstance().setFlow(new PasswordFlow(settings));
+    }
+
+    public Callable<Void> authenticate(ProgressObserver observer, String password) {
+        logger.info("Creating new AuthenticateUser command");
+        return new AuthenticateUser(observer, password, Oauth.getInstance());
     }
 
     public Callable<Void> sendDiagnostics(
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUser.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUser.java
new file mode 100644
index 00000000..c22476bd
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUser.java
@@ -0,0 +1,32 @@
+package fi.helsinki.cs.tmc.core.commands;
+
+import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
+import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.exceptions.AuthenticationFailedException;
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+
+import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
+import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
+
+public class AuthenticateUser extends Command<Void> {
+    private String password;
+    private final Oauth oauth;
+
+    public AuthenticateUser(ProgressObserver observer, String password, Oauth oauth) {
+        super(observer);
+        this.password = password;
+        this.oauth = oauth;
+    }
+
+    @Override
+    public Void call() throws AuthenticationFailedException {
+        TmcSettings tmcSettings = TmcSettingsHolder.get();
+        try {
+            oauth.fetchNewToken(password);
+        } catch (OAuthSystemException | OAuthProblemException e) {
+            throw new AuthenticationFailedException(e);
+        }
+        return null;
+    }
+}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 1480c5c3..0f177348 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -13,6 +13,7 @@
 import fi.helsinki.cs.tmc.core.domain.Review;
 import fi.helsinki.cs.tmc.core.domain.submission.FeedbackAnswer;
 import fi.helsinki.cs.tmc.core.exceptions.FailedHttpResponseException;
+import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 import fi.helsinki.cs.tmc.core.exceptions.ObsoleteClientException;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utilities.JsonMaker;
@@ -106,16 +107,16 @@ public T call() throws Exception {
                 try {
                     return callable.call();
                 } catch (FailedHttpResponseException e) {
-                    LOG.log(Level.INFO,
-                            "Callable call failed, refreshing oauth token and trying again");
-                    oauth.refreshToken();
-                    return callable.call();
+                    LOG.log(Level.WARNING,
+                            "Communication with the server failed!");
+                    throw new NotLoggedInException();
                 }
             }
         };
     }
 
-    private URI getCourseListUrl() throws OAuthSystemException, OAuthProblemException {
+    private URI getCourseListUrl()
+        throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
         String serverAddress = settings.getServerAddress();
         String url;
         if (serverAddress.endsWith("/")) {
@@ -126,37 +127,21 @@ private URI getCourseListUrl() throws OAuthSystemException, OAuthProblemExceptio
         return addApiCallQueryParameters(URI.create(url));
     }
 
-    private URI addApiCallQueryParameters(URI url) throws OAuthSystemException,
-            OAuthProblemException {
+    private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
         url = UriUtils.withQueryParam(url, "api_version", "" + API_VERSION);
         url = UriUtils.withQueryParam(url, "client", settings.clientName());
         url = UriUtils.withQueryParam(url, "client_version", clientVersion);
-        url = UriUtils.withQueryParam(url, "access_token", oauth.getToken());
+        String token = oauth.getToken();
+        url = UriUtils.withQueryParam(url, "access_token", token);
         return url;
     }
 
-    private HttpTasks createHttpTasks() {
-        return new HttpTasks().setCredentials(settings.getUsername(), settings.getPassword());
-    }
-
-    public boolean hasEnoughSettings() {
-        return !settings.getUsername().isEmpty()
-                && !settings.getPassword().isEmpty()
-                && !settings.getServerAddress().isEmpty();
-    }
-
-    public boolean needsOnlyPassword() {
-        return !settings.getUsername().isEmpty()
-                && settings.getPassword().isEmpty()
-                && !settings.getServerAddress().isEmpty();
-    }
-
     public Callable<List<Course>> getDownloadingCourseListTask() {
         return wrapWithTokenRefresh(new Callable<List<Course>>() {
             @Override
             public List<Course> call() throws Exception {
                 try {
-                    Callable<String> download = createHttpTasks().getForText(getCourseListUrl());
+                    Callable<String> download = new HttpTasks().getForText(getCourseListUrl());
                     String text = download.call();
                     return courseListParser.parseFromJson(text);
                 } catch (FailedHttpResponseException ex) {
@@ -173,7 +158,7 @@ public Callable<Course> getFullCourseInfoTask(final Course courseStub) {
             public Course call() throws Exception {
                 try {
                     URI url = addApiCallQueryParameters(courseStub.getDetailsUrl());
-                    final Callable<String> download = createHttpTasks().getForText(url);
+                    final Callable<String> download = new HttpTasks().getForText(url);
                     String text = download.call();
                     return courseInfoParser.parseFromJson(text);
                 } catch (FailedHttpResponseException ex) {
@@ -191,7 +176,7 @@ public Callable<Void> getUnlockingTask(final Course course) {
             @Override
             public Void call() throws Exception {
                 try {
-                    final Callable<String> download = createHttpTasks()
+                    final Callable<String> download = new HttpTasks()
                             .postForText(getUnlockUrl(course), params);
                     download.call();
                     return null;
@@ -204,18 +189,18 @@ public Void call() throws Exception {
         });
     }
 
-    private URI getUnlockUrl(Course course) throws OAuthSystemException, OAuthProblemException {
+    private URI getUnlockUrl(Course course) throws NotLoggedInException {
         return addApiCallQueryParameters(course.getUnlockUrl());
     }
 
     public Callable<byte[]> getDownloadingExerciseZipTask(Exercise exercise) {
         URI zipUrl = exercise.getDownloadUrl();
-        return createHttpTasks().getForBinary(zipUrl);
+        return new HttpTasks().getForBinary(zipUrl);
     }
 
     public Callable<byte[]> getDownloadingExerciseSolutionZipTask(Exercise exercise) {
         URI zipUrl = exercise.getSolutionDownloadUrl();
-        return createHttpTasks().getForBinary(zipUrl);
+        return new HttpTasks().getForBinary(zipUrl);
     }
 
     public Callable<SubmissionResponse> getSubmittingExerciseTask(
@@ -232,7 +217,7 @@ public SubmissionResponse call() throws Exception {
                 String response;
                 try {
                     final URI submitUrl = addApiCallQueryParameters(exercise.getReturnUrl());
-                    final Callable<String> upload = createHttpTasks()
+                    final Callable<String> upload = new HttpTasks()
                             .uploadFileForTextDownload(submitUrl, params,
                                     "submission[file]", sourceZip);
                     response = upload.call();
@@ -274,7 +259,7 @@ public SubmissionResponse(URI submissionUrl, URI pasteUrl) {
     }
 
     public Callable<String> getSubmissionFetchTask(URI submissionUrl) {
-        return createHttpTasks().getForText(submissionUrl);
+        return new HttpTasks().getForText(submissionUrl);
     }
 
     public Callable<List<Review>> getDownloadingReviewListTask(final Course course) {
@@ -283,7 +268,7 @@ public Callable<List<Review>> getDownloadingReviewListTask(final Course course)
             public List<Review> call() throws Exception {
                 try {
                     URI url = addApiCallQueryParameters(course.getReviewsUrl());
-                    final Callable<String> download = createHttpTasks().getForText(url);
+                    final Callable<String> download = new HttpTasks().getForText(url);
                     String text = download.call();
                     return reviewListParser.parseFromJson(text);
                 } catch (FailedHttpResponseException ex) {
@@ -308,7 +293,7 @@ public Callable<Void> getMarkingReviewAsReadTask(final Review review, boolean re
             @Override
             public Void call() throws Exception {
                 URI url = addApiCallQueryParameters(URI.create(review.getUpdateUrl() + ".json"));
-                final Callable<String> task = createHttpTasks().postForText(url, params);
+                final Callable<String> task = new HttpTasks().postForText(url, params);
                 task.call();
                 return null;
             }
@@ -332,7 +317,7 @@ public Callable<String> getFeedbackAnsweringJob(final URI answerUrl,
             public String call() throws Exception {
                 try {
                     final URI submitUrl = addApiCallQueryParameters(answerUrl);
-                    final Callable<String> upload = createHttpTasks()
+                    final Callable<String> upload = new HttpTasks()
                             .postForText(submitUrl, params);
                     return upload.call();
                 } catch (FailedHttpResponseException ex) {
@@ -345,12 +330,11 @@ public String call() throws Exception {
     }
 
     public Callable<Object> getSendEventLogJob(final URI spywareServerUrl,
-            List<LoggableEvent> events) {
-
+            List<LoggableEvent> events) throws NotLoggedInException {
         final Map<String, String> extraHeaders = new LinkedHashMap<>();
         extraHeaders.put("X-Tmc-Version", "1");
         extraHeaders.put("X-Tmc-Username", settings.getUsername());
-        extraHeaders.put("X-Tmc-Password", settings.getPassword());
+        extraHeaders.put("X-Tmc-SESSION-ID", oauth.getToken());
 
         final byte[] data;
         try {
@@ -363,7 +347,7 @@ public Callable<Object> getSendEventLogJob(final URI spywareServerUrl,
             @Override
             public Object call() throws Exception {
                 URI url = addApiCallQueryParameters(spywareServerUrl);
-                final Callable<String> upload = createHttpTasks()
+                final Callable<String> upload = new HttpTasks()
                         .rawPostForText(url, data, extraHeaders);
                 upload.call();
                 return null;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpTasks.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpTasks.java
index c80adc0a..d088e705 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpTasks.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpTasks.java
@@ -5,7 +5,6 @@
 import com.google.gson.Gson;
 
 import org.apache.http.NameValuePair;
-import org.apache.http.auth.UsernamePasswordCredentials;
 import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.ByteArrayEntity;
@@ -36,19 +35,12 @@ public class HttpTasks {
             ContentType.create("text/plain", "utf-8");
     private static final Gson gson = new Gson();
 
-    private UsernamePasswordCredentials credentials = null;
-
-    public HttpTasks setCredentials(String username, String password) {
-        this.credentials = new UsernamePasswordCredentials(username, password);
-        return this;
-    }
-
     private HttpRequestExecutor createExecutor(URI url) {
-        return new HttpRequestExecutor(url).setCredentials(credentials);
+        return new HttpRequestExecutor(url);
     }
 
     private HttpRequestExecutor createExecutor(HttpPost request) {
-        return new HttpRequestExecutor(request).setCredentials(credentials);
+        return new HttpRequestExecutor(request);
     }
 
     /**
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
index 079af74c..66429338 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
@@ -1,15 +1,27 @@
 package fi.helsinki.cs.tmc.core.communication.oauth2;
 
+import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
+import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+
+import org.apache.oltu.oauth2.client.OAuthClient;
+import org.apache.oltu.oauth2.client.URLConnectionClient;
+import org.apache.oltu.oauth2.client.request.OAuthClientRequest;
+import org.apache.oltu.oauth2.client.response.OAuthJSONAccessTokenResponse;
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
 import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
+import org.apache.oltu.oauth2.common.message.types.GrantType;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class Oauth {
     
     private static Oauth oauth;
+    private static final Logger log = LoggerFactory.getLogger(Oauth.class);
 
-    private OauthFlow flow;
-    private String token;
-
+    private TmcSettings settings;
     /**
      * Returns the Oauth instance.
      * 
@@ -23,6 +35,7 @@ public static synchronized Oauth getInstance() {
     }
     
     protected Oauth() {
+        settings = TmcSettingsHolder.get();
     }
 
     /**
@@ -32,19 +45,13 @@ protected Oauth() {
      * Gets the token from cache or uses the known flow to fetch the it.</p>
      *
      * @return oauth token
-     * @throws org.apache.oltu.oauth2.common.exception.OAuthSystemException an error occurred with
-     *     getting token
-     * @throws org.apache.oltu.oauth2.common.exception.OAuthProblemException an error occurred with
-     *     getting token
+     * @throws TmcCoreException when an oauth token hasn't been fetched yet
      */
-    public String getToken() throws OAuthSystemException, OAuthProblemException {
-        if (flow == null) {
-            throw new OAuthSystemException("Oauth flow is null");
-        }
+    public String getToken() throws NotLoggedInException {
         if (!hasToken()) {
-            token = flow.getToken();
+            throw new NotLoggedInException();
         }
-        return token;
+        return settings.getToken().get();
     }
 
     /**
@@ -53,35 +60,36 @@ public String getToken() throws OAuthSystemException, OAuthProblemException {
      * @return has token
      */
     public boolean hasToken() {
-        return token != null;
+        return settings.getToken().isPresent();
     }
 
     /**
-     * Returns the oauth token.
-     *
-     * <p>
-     * Uses the known flow to fetch the token and caches it.</p>
-     *
-     * @return oauth token
-     * @throws org.apache.oltu.oauth2.common.exception.OAuthSystemException an error occurred with
-     *     getting token
-     * @throws org.apache.oltu.oauth2.common.exception.OAuthProblemException an error occurred with
-     *     getting token
+     * Fetches a new oauth token from server using settings' parameters in request.
+     * @param password for fetching correct token
+     * @throws OAuthSystemException an error occurred with getting token
+     * @throws OAuthProblemException an error occurred with getting token
      */
-    public String refreshToken() throws OAuthSystemException, OAuthProblemException {
-        if (flow == null) {
-            throw new OAuthSystemException("Oauth flow is null");
-        }
-        token = flow.getToken();
-        return token;
+    public void fetchNewToken(String password) throws OAuthSystemException, OAuthProblemException {
+        log.info("Fetching new oauth token from server");
+        OAuthClientRequest request = OAuthClientRequest
+                .tokenLocation(settings.getOauthTokenUrl())
+                .setGrantType(GrantType.PASSWORD)
+                .setClientId(settings.getOauthApplicationId())
+                .setClientSecret(settings.getOauthSecret())
+                .setUsername(settings.getUsername())
+                .setPassword(password)
+                .buildQueryMessage();
+        OAuthClient client = new OAuthClient(new URLConnectionClient());
+        String token = client.accessToken(request, OAuthJSONAccessTokenResponse.class)
+                .getAccessToken();
+        setToken(token);
     }
-    
+
     /**
-     * Changes the oauth flow.
-     * 
-     * @param authflow an oauth flow
+     * Sets given oauth token to TmcSettings.
+     * @param token to be set to settings
      */
-    public void setFlow(OauthFlow authflow) {
-        this.flow = authflow;
+    private void setToken(String token) {
+        settings.setToken(token);
     }
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthFlow.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthFlow.java
deleted file mode 100644
index 047552e0..00000000
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthFlow.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package fi.helsinki.cs.tmc.core.communication.oauth2;
-
-import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
-import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
-
-/**
- * An interface for an oauth flow.
- */
-public interface OauthFlow {
-
-    /**
-     * Uses the flow to get a token from the server.
-     *
-     * @return a oauth token
-     * @throws org.apache.oltu.oauth2.common.exception.OAuthSystemException an error occurred with
-     *     getting token
-     * @throws org.apache.oltu.oauth2.common.exception.OAuthProblemException an error occurred with
-     *     getting token
-     */
-    public String getToken() throws OAuthSystemException, OAuthProblemException;
-}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/PasswordFlow.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/PasswordFlow.java
deleted file mode 100644
index 4311440c..00000000
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/PasswordFlow.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package fi.helsinki.cs.tmc.core.communication.oauth2;
-
-import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
-
-import org.apache.oltu.oauth2.client.OAuthClient;
-import org.apache.oltu.oauth2.client.URLConnectionClient;
-import org.apache.oltu.oauth2.client.request.OAuthClientRequest;
-import org.apache.oltu.oauth2.client.response.OAuthJSONAccessTokenResponse;
-import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
-import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
-import org.apache.oltu.oauth2.common.message.types.GrantType;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * A password flow for oauth.
- *
- * <p>
- * Password flow fetches the token from server by using username and password</p>
- */
-public class PasswordFlow implements OauthFlow {
-
-    private static final Logger LOG = Logger.getLogger(PasswordFlow.class.getName());
-    private final TmcSettings settings;
-
-    public PasswordFlow(TmcSettings settings) {
-        this.settings = settings;
-    }
-
-    @Override
-    public String getToken() throws OAuthSystemException, OAuthProblemException {
-        LOG.log(Level.INFO, "Fetching new oauth token from server");
-        OAuthClientRequest request = OAuthClientRequest
-                .tokenLocation(settings.getOauthTokenUrl())
-                .setGrantType(GrantType.PASSWORD)
-                .setClientId(settings.getOauthApplicationId())
-                .setClientSecret(settings.getOauthSecret())
-                .setUsername(settings.getUsername())
-                .setPassword(settings.getPassword())
-                .buildQueryMessage();
-        OAuthClient client = new OAuthClient(new URLConnectionClient());
-        String token = client.accessToken(request, OAuthJSONAccessTokenResponse.class)
-                .getAccessToken();
-        return token;
-    }
-
-}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
index 8f76c59e..fc0b0ee5 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
@@ -14,7 +14,12 @@ public interface TmcSettings {
 
     String getServerAddress();
 
-    String getPassword();
+    /**
+     * Used for old login credentials, new ones use oauth.
+     */
+    Optional<String> getPassword();
+
+    void setPassword(Optional<String> password);
 
     String getUsername();
 
@@ -64,4 +69,8 @@ public interface TmcSettings {
     String getOauthApplicationId();
 
     String getOauthSecret();
+
+    void setToken(String token);
+
+    Optional<String> getToken();
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/exceptions/AuthenticationFailedException.java b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/AuthenticationFailedException.java
new file mode 100644
index 00000000..928b14b7
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/AuthenticationFailedException.java
@@ -0,0 +1,8 @@
+package fi.helsinki.cs.tmc.core.exceptions;
+
+public class AuthenticationFailedException extends TmcCoreException {
+
+    public AuthenticationFailedException(Exception ex) {
+        super("Authentication failed!", ex);
+    }
+}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/exceptions/NotLoggedInException.java b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/NotLoggedInException.java
new file mode 100644
index 00000000..e82b9a0e
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/NotLoggedInException.java
@@ -0,0 +1,8 @@
+package fi.helsinki.cs.tmc.core.exceptions;
+
+public class NotLoggedInException extends TmcCoreException {
+
+    public NotLoggedInException() {
+        super("Not logged in!");
+    }
+}
diff --git a/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java b/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java
index b08e3a36..ae01a451 100644
--- a/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java
+++ b/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java
@@ -4,6 +4,7 @@
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.domain.Course;
+import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utilities.Cooldown;
 import fi.helsinki.cs.tmc.core.utilities.SingletonTask;
@@ -220,8 +221,13 @@ public void run() {
                             "Sending {0} events to {1}",
                             new Object[] {eventsToSend.size(), url});
 
-                    if (!tryToSend(eventsToSend, url)) {
-                        shouldSendMore = false;
+                    try {
+                        if (!tryToSend(eventsToSend, url)) {
+                            shouldSendMore = false;
+                        }
+                    } catch (NotLoggedInException e) {
+                        throw new RuntimeException(
+                            "Could not send analytics because not logged in.", e);
                     }
                 } while (shouldSendMore);
             }
@@ -257,7 +263,8 @@ private URI pickDestinationUrl() {
                 return urls.get(random.nextInt(urls.size()));
             }
 
-            private boolean tryToSend(final ArrayList<LoggableEvent> eventsToSend, final URI url) {
+            private boolean tryToSend(final ArrayList<LoggableEvent> eventsToSend, final URI url)
+                throws NotLoggedInException {
                 Callable<Object> task = serverAccess.getSendEventLogJob(url, eventsToSend);
 
                 // TODO: Should we still wrap this into bg task (future)
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
new file mode 100644
index 00000000..08a28232
--- /dev/null
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
@@ -0,0 +1,68 @@
+package fi.helsinki.cs.tmc.core.commands;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doAnswer;
+
+import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
+import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.exceptions.AuthenticationFailedException;
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
+
+import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
+import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+public class AuthenticateUserTest {
+    @Mock
+    ProgressObserver mockObserver;
+
+    TmcSettings settings;
+    @Mock
+    Oauth oauth;
+
+    private Command<Void> command;
+
+    @Before
+    public void setUp() throws OAuthProblemException, OAuthSystemException {
+        MockitoAnnotations.initMocks(this);
+        settings = new MockSettings();
+        TmcSettingsHolder.set(settings);
+        doAnswer(new Answer() {
+            @Override
+            public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
+                settings.setToken("testToken");
+                return null;
+            }
+        }).when(oauth).fetchNewToken("password");
+        doAnswer(new Answer() {
+            @Override
+            public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
+                throw new OAuthSystemException();
+            }
+        }).when(oauth).fetchNewToken("wrongPassword");
+    }
+
+    @Test
+    public void testCallSucceeds() throws Exception {
+        command = new AuthenticateUser(mockObserver, "password", oauth);
+        command.call();
+        assertTrue(settings.getToken().isPresent());
+        assertEquals(settings.getToken().get(), "testToken");
+    }
+
+    @Test(expected = AuthenticationFailedException.class)
+    public void testCallFails() throws Exception {
+        command = new AuthenticateUser(mockObserver, "wrongPassword", oauth);
+        command.call();
+    }
+}
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java
index 051d3c1e..d2de1915 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java
@@ -6,8 +6,6 @@
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
-import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
-import fi.helsinki.cs.tmc.core.communication.oauth2.PasswordFlow;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthMock.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthMock.java
deleted file mode 100644
index 05b417c1..00000000
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthMock.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package fi.helsinki.cs.tmc.core.communication.oauth2;
-
-class OauthMock extends Oauth {
-    public OauthMock() {
-        super();
-    }
-}
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
index 0739d83e..4cce45fe 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
@@ -4,62 +4,71 @@
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+
+import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
 import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
+
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.Mock;
+
 import org.mockito.MockitoAnnotations;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import java.lang.reflect.Field;
 
 public class OauthTest {
 
-    private Oauth oauth;
+    private TmcSettings settings;
 
-    @Mock
-    private OauthFlow flow;
+    private Oauth oauth;
 
     @Before
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
-        when(flow.getToken()).thenReturn("one", "two");
-        this.oauth = new OauthMock();
-        this.oauth.setFlow(flow);
+        settings = new MockSettings();
+        TmcSettingsHolder.set(settings);
+        oauth = spy(Oauth.getInstance());
+        doAnswer(new Answer() {
+            @Override
+            public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
+                settings.setToken("testToken");
+                return null;
+            }
+        }).when(oauth).fetchNewToken(anyString());
     }
 
-    @Test
-    public void hasNoTokenWhenInitialized() throws Exception {
-        assertFalse(oauth.hasToken());
-        verify(flow, times(0)).getToken();
+    @After
+    public void tearDown() throws NoSuchFieldException, IllegalAccessException {
+        Field oauth = Oauth.class.getDeclaredField("oauth");
+        oauth.setAccessible(true);
+        oauth.set(null, null);
     }
 
     @Test
-    public void hasTokenWhenFetchedAndCallsFlow() {
+    public void hasTokenWhenFetched() {
         try {
-            String token = oauth.getToken();
-            verify(flow).getToken();
+            oauth.fetchNewToken("password");
             assertTrue(oauth.hasToken());
-            assertEquals("one", token);
+            assertEquals("testToken", settings.getToken().get());
         } catch (OAuthSystemException | OAuthProblemException ex) {
             fail("Got exception: " + ex.toString());
         }
     }
 
     @Test
-    public void refreshTokenCallsFlowAndGetsNewToken() {
-        try {
-            String token = oauth.getToken();
-            assertEquals("one", token);
-            verify(flow, times(1)).getToken();
-            String token2 = oauth.refreshToken();
-            assertEquals("two", token2);
-            verify(flow, times(2)).getToken();
-            assertTrue(oauth.hasToken());
-        } catch (OAuthSystemException | OAuthProblemException ex) {
-            fail("Got exception: " + ex.toString());
-        }
+    public void hasNoTokenWhenInitialized() throws Exception {
+        assertFalse(oauth.hasToken());
+        verify(oauth, times(0)).fetchNewToken(anyString());
     }
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java b/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java
index 594543a7..a639c0b8 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java
@@ -13,6 +13,7 @@
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
+import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.spyware.EventSendBuffer;
 import fi.helsinki.cs.tmc.spyware.EventStore;
@@ -65,7 +66,7 @@ public class EventSendBufferTest {
     private EventSendBuffer sender;
 
     @Before
-    public void setUp() throws IOException {
+    public void setUp() throws IOException, NotLoggedInException {
         MockitoAnnotations.initMocks(this);
 
         TmcSettingsHolder.set(tmcSettings);
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
new file mode 100644
index 00000000..285edf89
--- /dev/null
+++ b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
@@ -0,0 +1,125 @@
+package fi.helsinki.cs.tmc.core.utils;
+
+import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.domain.Course;
+
+import com.google.common.base.Optional;
+
+import org.apache.http.impl.conn.SystemDefaultRoutePlanner;
+
+import java.nio.file.Path;
+import java.util.Locale;
+
+public class MockSettings implements TmcSettings {
+
+    private Optional<String> token;
+
+    public MockSettings() {
+        token = Optional.absent();
+    }
+
+    @Override
+    public String getServerAddress() {
+        return null;
+    }
+
+    @Override
+    public Optional<String> getPassword() {
+        return null;
+    }
+
+    @Override
+    public void setPassword(Optional<String> password) {
+
+    }
+
+    @Override
+    public String getUsername() {
+        return null;
+    }
+
+    @Override
+    public boolean userDataExists() {
+        return false;
+    }
+
+    @Override
+    public Optional<Course> getCurrentCourse() {
+        return null;
+    }
+
+    @Override
+    public String apiVersion() {
+        return null;
+    }
+
+    @Override
+    public String clientName() {
+        return null;
+    }
+
+    @Override
+    public String clientVersion() {
+        return null;
+    }
+
+    @Override
+    public String getFormattedUserData() {
+        return null;
+    }
+
+    @Override
+    public Path getTmcProjectDirectory() {
+        return null;
+    }
+
+    @Override
+    public Locale getLocale() {
+        return null;
+    }
+
+    @Override
+    public SystemDefaultRoutePlanner proxy() {
+        return null;
+    }
+
+    @Override
+    public void setCourse(Course theCourse) {
+
+    }
+
+    @Override
+    public void setConfigRoot(Path configRoot) {
+
+    }
+
+    @Override
+    public Path getConfigRoot() {
+        return null;
+    }
+
+    @Override
+    public String getOauthTokenUrl() {
+        return null;
+    }
+
+    @Override
+    public String getOauthApplicationId() {
+        return null;
+    }
+
+    @Override
+    public String getOauthSecret() {
+        return null;
+    }
+
+    @Override
+    public void setToken(String token) {
+        this.token = Optional.of(token);
+    }
+
+    @Override
+    public Optional<String> getToken() {
+        return token;
+    }
+}

From e5631a3e82f77bc381cf63f55aa6597b46bb006a Mon Sep 17 00:00:00 2001
From: Antti <antti.leinonen@helsinki.fi>
Date: Mon, 6 Feb 2017 12:21:21 +0200
Subject: [PATCH 005/113] Tests for core commands and few refactorings

---
 .../commands/AbstractSubmissionCommand.java   |   4 +
 .../tmc/core/commands/GetCourseDetails.java   |   4 +
 .../cs/tmc/core/commands/ListCourses.java     |   4 +
 .../TmcServerCommunicationTaskFactory.java    |  22 ++--
 .../cs/tmc/spyware/EventSendBuffer.java       |  11 +-
 .../fi/helsinki/cs/tmc/core/TmcCoreTest.java  | 122 ++++++++++++++++++
 .../cs/tmc/core/utils/MockSettings.java       |  31 ++---
 7 files changed, 163 insertions(+), 35 deletions(-)
 create mode 100644 src/test/java/fi/helsinki/cs/tmc/core/TmcCoreTest.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/AbstractSubmissionCommand.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/AbstractSubmissionCommand.java
index af2125bc..06173271 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/AbstractSubmissionCommand.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/AbstractSubmissionCommand.java
@@ -3,6 +3,7 @@
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
@@ -71,6 +72,9 @@ TmcServerCommunicationTaskFactory.SubmissionResponse submitToServer(
 
             return response;
         } catch (Exception ex) {
+            if (ex instanceof NotLoggedInException) {
+                throw (NotLoggedInException)ex;
+            }
             informObserver(1, "Failed to submit exercise");
             logger.warn("Failed to submit exercise", ex);
             throw new TmcCoreException("Failed to submit exercise", ex);
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetails.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetails.java
index 2da3908f..40bf7e98 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetails.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetails.java
@@ -3,6 +3,7 @@
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
 
 import com.google.common.annotations.VisibleForTesting;
@@ -46,6 +47,9 @@ public Course call() throws TmcCoreException, URISyntaxException {
             informObserver(1, "Course refresh completed successfully");
             return result;
         } catch (Exception ex) {
+            if (ex instanceof NotLoggedInException) {
+                throw (NotLoggedInException)ex;
+            }
             logger.warn("Failed to get course details for course " + course.getName(), ex);
             informObserver(1, "Failed to refresh course");
             throw new TmcCoreException("Failed to get course details", ex);
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/ListCourses.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/ListCourses.java
index 32cf5fa3..5a8803c1 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/ListCourses.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/ListCourses.java
@@ -3,6 +3,7 @@
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
 import fi.helsinki.cs.tmc.core.utilities.ServerErrorHelper;
 
@@ -43,6 +44,9 @@ public List<Course> call() throws TmcCoreException {
             logger.debug("Successfully fetched course list");
             return result;
         } catch (Exception ex) {
+            if (ex instanceof NotLoggedInException) {
+                throw (NotLoggedInException)ex;
+            }
             logger.info("Failed to fetch courses from the server", ex);
             informObserver(1, "Failed to fetch courses from the server");
             throw new TmcCoreException("Failed to fetch courses from the server. \n"
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 0f177348..9b8d00fe 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -100,7 +100,7 @@ public void setSettings(TmcSettings settings) {
      * @param callable Callable to be wrapped
      * @return The given Callable wrapped in another Callable
      */
-    private <T> Callable<T> wrapWithTokenRefresh(final Callable<T> callable) {
+    private <T> Callable<T> wrapWithNotLoggedInException(final Callable<T> callable) {
         return new Callable<T>() {
             @Override
             public T call() throws Exception {
@@ -120,9 +120,9 @@ private URI getCourseListUrl()
         String serverAddress = settings.getServerAddress();
         String url;
         if (serverAddress.endsWith("/")) {
-            url = settings.getServerAddress() + "courses.json";
+            url = serverAddress + "courses.json";
         } else {
-            url = settings.getServerAddress() + "/courses.json";
+            url = serverAddress + "/courses.json";
         }
         return addApiCallQueryParameters(URI.create(url));
     }
@@ -137,7 +137,7 @@ private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
     }
 
     public Callable<List<Course>> getDownloadingCourseListTask() {
-        return wrapWithTokenRefresh(new Callable<List<Course>>() {
+        return wrapWithNotLoggedInException(new Callable<List<Course>>() {
             @Override
             public List<Course> call() throws Exception {
                 try {
@@ -153,7 +153,7 @@ public List<Course> call() throws Exception {
     }
 
     public Callable<Course> getFullCourseInfoTask(final Course courseStub) {
-        return wrapWithTokenRefresh(new Callable<Course>() {
+        return wrapWithNotLoggedInException(new Callable<Course>() {
             @Override
             public Course call() throws Exception {
                 try {
@@ -172,7 +172,7 @@ public Course call() throws Exception {
 
     public Callable<Void> getUnlockingTask(final Course course) {
         final Map<String, String> params = Collections.emptyMap();
-        return wrapWithTokenRefresh(new Callable<Void>() {
+        return wrapWithNotLoggedInException(new Callable<Void>() {
             @Override
             public Void call() throws Exception {
                 try {
@@ -211,7 +211,7 @@ public Callable<SubmissionResponse> getSubmittingExerciseTask(
         params.put("client_nanotime", "" + System.nanoTime());
         params.putAll(extraParams);
 
-        return wrapWithTokenRefresh(new Callable<SubmissionResponse>() {
+        return wrapWithNotLoggedInException(new Callable<SubmissionResponse>() {
             @Override
             public SubmissionResponse call() throws Exception {
                 String response;
@@ -263,7 +263,7 @@ public Callable<String> getSubmissionFetchTask(URI submissionUrl) {
     }
 
     public Callable<List<Review>> getDownloadingReviewListTask(final Course course) {
-        return wrapWithTokenRefresh(new Callable<List<Review>>() {
+        return wrapWithNotLoggedInException(new Callable<List<Review>>() {
             @Override
             public List<Review> call() throws Exception {
                 try {
@@ -289,7 +289,7 @@ public Callable<Void> getMarkingReviewAsReadTask(final Review review, boolean re
             params.put("mark_as_unread", "1");
         }
 
-        return wrapWithTokenRefresh(new Callable<Void>() {
+        return wrapWithNotLoggedInException(new Callable<Void>() {
             @Override
             public Void call() throws Exception {
                 URI url = addApiCallQueryParameters(URI.create(review.getUpdateUrl() + ".json"));
@@ -312,7 +312,7 @@ public Callable<String> getFeedbackAnsweringJob(final URI answerUrl,
             params.put(keyPrefix + "[answer]", answer.getAnswer());
         }
 
-        return wrapWithTokenRefresh(new Callable<String>() {
+        return wrapWithNotLoggedInException(new Callable<String>() {
             @Override
             public String call() throws Exception {
                 try {
@@ -343,7 +343,7 @@ public Callable<Object> getSendEventLogJob(final URI spywareServerUrl,
             throw new RuntimeException(e);
         }
 
-        return wrapWithTokenRefresh(new Callable<Object>() {
+        return wrapWithNotLoggedInException(new Callable<Object>() {
             @Override
             public Object call() throws Exception {
                 URI url = addApiCallQueryParameters(spywareServerUrl);
diff --git a/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java b/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java
index ae01a451..678734d7 100644
--- a/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java
+++ b/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java
@@ -221,14 +221,9 @@ public void run() {
                             "Sending {0} events to {1}",
                             new Object[] {eventsToSend.size(), url});
 
-                    try {
                         if (!tryToSend(eventsToSend, url)) {
                             shouldSendMore = false;
                         }
-                    } catch (NotLoggedInException e) {
-                        throw new RuntimeException(
-                            "Could not send analytics because not logged in.", e);
-                    }
                 } while (shouldSendMore);
             }
 
@@ -263,13 +258,11 @@ private URI pickDestinationUrl() {
                 return urls.get(random.nextInt(urls.size()));
             }
 
-            private boolean tryToSend(final ArrayList<LoggableEvent> eventsToSend, final URI url)
-                throws NotLoggedInException {
-                Callable<Object> task = serverAccess.getSendEventLogJob(url, eventsToSend);
-
+            private boolean tryToSend(final ArrayList<LoggableEvent> eventsToSend, final URI url) {
                 // TODO: Should we still wrap this into bg task (future)
 
                 try {
+                    Callable<Object> task = serverAccess.getSendEventLogJob(url, eventsToSend);
                     task.call();
                 } catch (Exception ex) {
                     log.log(Level.INFO, "Sending failed", ex);
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/TmcCoreTest.java b/src/test/java/fi/helsinki/cs/tmc/core/TmcCoreTest.java
new file mode 100644
index 00000000..40ffcae0
--- /dev/null
+++ b/src/test/java/fi/helsinki/cs/tmc/core/TmcCoreTest.java
@@ -0,0 +1,122 @@
+package fi.helsinki.cs.tmc.core;
+
+import static org.mockito.Mockito.doReturn;
+
+import fi.helsinki.cs.tmc.core.commands.GetCourseDetails;
+import fi.helsinki.cs.tmc.core.commands.GetUnreadReviews;
+import fi.helsinki.cs.tmc.core.commands.ListCourses;
+import fi.helsinki.cs.tmc.core.commands.MarkReviewAsRead;
+import fi.helsinki.cs.tmc.core.commands.SendFeedback;
+import fi.helsinki.cs.tmc.core.commands.SendSpywareEvents;
+import fi.helsinki.cs.tmc.core.commands.Submit;
+import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
+import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.domain.Course;
+import fi.helsinki.cs.tmc.core.domain.Exercise;
+import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.domain.Review;
+import fi.helsinki.cs.tmc.core.domain.submission.FeedbackAnswer;
+import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
+import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
+import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
+import fi.helsinki.cs.tmc.spyware.LoggableEvent;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
+
+import java.lang.reflect.Field;
+import java.net.URI;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+public class TmcCoreTest {
+
+    @Mock
+    ProgressObserver observer;
+
+    @Spy
+    Course course = new Course();
+
+    @Mock
+    Review review;
+
+    @Mock
+    Exercise exercise;
+
+    @Spy
+    TmcSettings settings = new MockSettings();
+
+    @Mock
+    TaskExecutor tmcLangs;
+
+    @Mock
+    Path path;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        TmcSettingsHolder.set(settings);
+        TmcLangsHolder.set(tmcLangs);
+        Locale locale = new Locale("a", "b", "c");
+        doReturn(URI.create("testUrl")).when(course).getReviewsUrl();
+        doReturn(URI.create("testUrl")).when(course).getDetailsUrl();
+        doReturn(path).when(settings).getTmcProjectDirectory();
+        doReturn(locale).when(settings).getLocale();
+        doReturn(URI.create("testUrl")).when(exercise).getReturnUrl();
+    }
+
+    @After
+    public void tearDown() throws NoSuchFieldException, IllegalAccessException {
+        Field oauth = Oauth.class.getDeclaredField("oauth");
+        oauth.setAccessible(true);
+        oauth.set(null, null);
+    }
+
+    @Test (expected = NotLoggedInException.class)
+    public void commandListCoursesThrowsNotLoggedInExceptionWhenHasNoToken() throws Exception {
+        new ListCourses(observer).call();
+    }
+
+    @Test (expected = NotLoggedInException.class)
+    public void commandGetUnreadReviewsThrowsNotLoggedInExceptionWhenHasNoToken() throws Exception {
+        new GetUnreadReviews(observer, course).call();
+    }
+
+    @Test (expected = NotLoggedInException.class)
+    public void commandSendFeedbackThrowsNotLoggedInExceptionWhenHasNoToken() throws Exception {
+        new SendFeedback(observer, new ArrayList<FeedbackAnswer>(), new URI("test")).call();
+    }
+
+    @Test (expected = NotLoggedInException.class)
+    public void commandGetCourseDetailsThrowsNotLoggedInExceptionWhenHasNoToken() throws Exception {
+        new GetCourseDetails(observer, course).call();
+    }
+
+    @Test (expected = NotLoggedInException.class)
+    public void commandMarkReviewsAsReadThrowsNotLoggedInExceptionWhenHasNoToken()
+        throws Exception {
+        new MarkReviewAsRead(observer, review).call();
+    }
+
+    @Test (expected = NotLoggedInException.class)
+    public void commandSendSpywareEventsThrowsNotLoggedInExceptionWhenHasNoToken()
+        throws Exception {
+        List<URI> spywareUrls = new ArrayList<>();
+        spywareUrls.add(URI.create("test"));
+        course.setSpywareUrls(spywareUrls);
+        new SendSpywareEvents(observer, course, new ArrayList<LoggableEvent>()).call();
+    }
+
+    @Test (expected = NotLoggedInException.class)
+    public void commandSubmitThrowsNotLoggedInExceptionWhenHasNoToken() throws Exception {
+        new Submit(observer, exercise).call();
+    }
+}
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
index 285edf89..ec14433a 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
@@ -7,6 +7,7 @@
 
 import org.apache.http.impl.conn.SystemDefaultRoutePlanner;
 
+import java.lang.UnsupportedOperationException;
 import java.nio.file.Path;
 import java.util.Locale;
 
@@ -20,12 +21,12 @@ public MockSettings() {
 
     @Override
     public String getServerAddress() {
-        return null;
+        return "testAddress";
     }
 
     @Override
     public Optional<String> getPassword() {
-        return null;
+        throw new UnsupportedOperationException();
     }
 
     @Override
@@ -35,7 +36,7 @@ public void setPassword(Optional<String> password) {
 
     @Override
     public String getUsername() {
-        return null;
+        return "testUsername";
     }
 
     @Override
@@ -45,42 +46,42 @@ public boolean userDataExists() {
 
     @Override
     public Optional<Course> getCurrentCourse() {
-        return null;
+        throw new UnsupportedOperationException();
     }
 
     @Override
     public String apiVersion() {
-        return null;
+        throw new UnsupportedOperationException();
     }
 
     @Override
     public String clientName() {
-        return null;
+        return "testClient";
     }
 
     @Override
     public String clientVersion() {
-        return null;
+        return "testClient";
     }
 
     @Override
     public String getFormattedUserData() {
-        return null;
+        throw new UnsupportedOperationException();
     }
 
     @Override
     public Path getTmcProjectDirectory() {
-        return null;
+        throw new UnsupportedOperationException();
     }
 
     @Override
     public Locale getLocale() {
-        return null;
+        throw new UnsupportedOperationException();
     }
 
     @Override
     public SystemDefaultRoutePlanner proxy() {
-        return null;
+        throw new UnsupportedOperationException();
     }
 
     @Override
@@ -95,22 +96,22 @@ public void setConfigRoot(Path configRoot) {
 
     @Override
     public Path getConfigRoot() {
-        return null;
+        throw new UnsupportedOperationException();
     }
 
     @Override
     public String getOauthTokenUrl() {
-        return null;
+        throw new UnsupportedOperationException();
     }
 
     @Override
     public String getOauthApplicationId() {
-        return null;
+        throw new UnsupportedOperationException();
     }
 
     @Override
     public String getOauthSecret() {
-        return null;
+        throw new UnsupportedOperationException();
     }
 
     @Override

From d4582a36502687791e4dc049fff2288e05b04b95 Mon Sep 17 00:00:00 2001
From: Antti <antti.leinonen@helsinki.fi>
Date: Mon, 6 Feb 2017 13:56:12 +0200
Subject: [PATCH 006/113] Settings password migration

---
 .../tmc/core/holders/TmcSettingsHolder.java   | 26 +++++++++++++++++++
 .../DownloadOrUpdateExercisesTest.java        |  4 ++-
 .../core/commands/GetCourseDetailsTest.java   |  4 ++-
 .../commands/GetUpdatableExercisesTest.java   |  4 ++-
 .../cs/tmc/core/commands/ListCoursesTest.java |  5 +++-
 .../core/commands/PasteWithCommentTest.java   |  4 ++-
 .../tmc/core/commands/RunCheckstyleTest.java  |  4 ++-
 .../cs/tmc/core/commands/RunTestsTest.java    |  4 ++-
 .../tmc/core/commands/SendFeedbackTest.java   |  5 ++--
 .../cs/tmc/core/commands/SubmitTest.java      |  5 ++--
 .../http/HttpRequestExecutorTest.java         |  9 ++++---
 .../core/holders/TmcSettingsHolderTest.java   |  5 ++--
 .../tmc/core/spyware/EventSendBufferTest.java |  4 ++-
 .../cs/tmc/core/utils/MockSettings.java       | 10 +++----
 14 files changed, 70 insertions(+), 23 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/holders/TmcSettingsHolder.java b/src/main/java/fi/helsinki/cs/tmc/core/holders/TmcSettingsHolder.java
index ddf01629..d646f6d1 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/holders/TmcSettingsHolder.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/holders/TmcSettingsHolder.java
@@ -1,12 +1,23 @@
 package fi.helsinki.cs.tmc.core.holders;
 
+import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.exceptions.UninitializedHolderException;
 
+import com.google.common.base.Optional;
+
+import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
+import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 public final class TmcSettingsHolder {
 
     private static TmcSettings settings;
 
+    private static final Logger logger = LoggerFactory.getLogger(TmcSettingsHolder.class);
+
     private TmcSettingsHolder() {}
 
     public static synchronized TmcSettings get() {
@@ -18,5 +29,20 @@ public static synchronized TmcSettings get() {
 
     public static synchronized void set(TmcSettings settings) {
         TmcSettingsHolder.settings = settings;
+        if (settings != null) {
+            migrateOldSettings();
+        }
+    }
+    // TODO delete at some point
+    private static void migrateOldSettings() {
+        try {
+            Optional<String> password = settings.getPassword();
+            if (password.isPresent()) {
+                Oauth.getInstance().fetchNewToken(password.get());
+                settings.setPassword(Optional.<String>absent());
+            }
+        } catch (OAuthSystemException | OAuthProblemException e) {
+            logger.warn("Settings migration failed.");
+        }
     }
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercisesTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercisesTest.java
index af246ed8..cbe6c043 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercisesTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercisesTest.java
@@ -18,6 +18,7 @@
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 import fi.helsinki.cs.tmc.core.utils.TestUtils;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutorImpl;
@@ -31,6 +32,7 @@
 
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -42,7 +44,7 @@ public class DownloadOrUpdateExercisesTest {
     @Rule public TemporaryFolder testFolder = new TemporaryFolder();
 
     @Mock ProgressObserver mockObserver;
-    @Mock TmcSettings settings;
+    @Spy TmcSettings settings = new MockSettings();
     @Mock TmcServerCommunicationTaskFactory factory;
     @Mock Course mockCourse;
     @Mock Exercise mockExerciseOne;
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetailsTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetailsTest.java
index ba215e7e..af5b4230 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetailsTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetailsTest.java
@@ -9,19 +9,21 @@
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 
 import org.junit.Before;
 import org.junit.Test;
 
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 
 import java.util.concurrent.Callable;
 
 public class GetCourseDetailsTest {
 
     @Mock ProgressObserver mockObserver;
-    @Mock TmcSettings settings;
+    @Spy TmcSettings settings = new MockSettings();
     @Mock TmcServerCommunicationTaskFactory factory;
     @Mock Course mockCourse;
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetUpdatableExercisesTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetUpdatableExercisesTest.java
index c5c0c669..b9858c73 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetUpdatableExercisesTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetUpdatableExercisesTest.java
@@ -15,6 +15,7 @@
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutorImpl;
 
@@ -27,6 +28,7 @@
 
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 
 import java.nio.file.Path;
 import java.util.concurrent.Callable;
@@ -36,7 +38,7 @@ public class GetUpdatableExercisesTest {
     @Rule public TemporaryFolder testFolder = new TemporaryFolder();
 
     @Mock ProgressObserver mockObserver;
-    @Mock TmcSettings settings;
+    @Spy TmcSettings settings = new MockSettings();
     @Mock TmcServerCommunicationTaskFactory factory;
     @Mock Course mockCurrentCourse;
     @Mock Course mockRefreshedCourse;
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/ListCoursesTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/ListCoursesTest.java
index a0518c9e..392f29a9 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/ListCoursesTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/ListCoursesTest.java
@@ -9,13 +9,16 @@
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 
 import com.google.common.collect.ImmutableList;
 
 import org.junit.Before;
 import org.junit.Test;
+
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 
 import java.util.List;
 import java.util.concurrent.Callable;
@@ -23,7 +26,7 @@
 public class ListCoursesTest {
 
     @Mock ProgressObserver mockObserver;
-    @Mock TmcSettings settings;
+    @Spy TmcSettings settings = new MockSettings();
     @Mock TmcServerCommunicationTaskFactory factory;
     @Mock Course courseOne;
     @Mock Course courseTwo;
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/PasteWithCommentTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/PasteWithCommentTest.java
index 2fddeeb2..1c863044 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/PasteWithCommentTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/PasteWithCommentTest.java
@@ -14,6 +14,7 @@
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 import fi.helsinki.cs.tmc.core.utils.TestUtils;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutorImpl;
@@ -25,6 +26,7 @@
 
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 
 import java.net.URI;
 import java.nio.file.Path;
@@ -37,7 +39,7 @@ public class PasteWithCommentTest {
     @Rule public TemporaryFolder testFolder = new TemporaryFolder();
 
     @Mock ProgressObserver mockObserver;
-    @Mock TmcSettings settings;
+    @Spy TmcSettings settings = new MockSettings();
     @Mock TmcServerCommunicationTaskFactory factory;
     @Mock Course mockCourse;
     @Mock Exercise mockExercise;
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/RunCheckstyleTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/RunCheckstyleTest.java
index d60bf695..a6e63195 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/RunCheckstyleTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/RunCheckstyleTest.java
@@ -12,6 +12,7 @@
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 import fi.helsinki.cs.tmc.core.utils.TestUtils;
 import fi.helsinki.cs.tmc.langs.abstraction.ValidationResult;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
@@ -24,6 +25,7 @@
 
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 
 import java.nio.file.Path;
 import java.util.Locale;
@@ -33,7 +35,7 @@ public class RunCheckstyleTest {
     @Rule public TemporaryFolder testFolder = new TemporaryFolder();
 
     @Mock ProgressObserver mockObserver;
-    @Mock TmcSettings settings;
+    @Spy TmcSettings settings = new MockSettings();
     @Mock Course mockCourse;
     @Mock Exercise mockExercise;
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java
index d2de1915..41eb925f 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/RunTestsTest.java
@@ -12,6 +12,7 @@
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 import fi.helsinki.cs.tmc.core.utils.TestUtils;
 import fi.helsinki.cs.tmc.langs.domain.RunResult.Status;
 import fi.helsinki.cs.tmc.langs.domain.RunResult;
@@ -25,6 +26,7 @@
 
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 
 import java.nio.file.Path;
 
@@ -34,7 +36,7 @@ public class RunTestsTest {
     Path project;
 
     @Mock ProgressObserver mockObserver;
-    @Mock TmcSettings settings;
+    @Spy TmcSettings settings = new MockSettings();
     @Mock Course mockCourse;
     @Mock Exercise mockExercise;
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SendFeedbackTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SendFeedbackTest.java
index 9ac26f43..46874ed8 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SendFeedbackTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SendFeedbackTest.java
@@ -3,7 +3,6 @@
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
 import static org.mockito.Mockito.verifyZeroInteractions;
 import static org.mockito.Mockito.when;
 
@@ -15,6 +14,7 @@
 import fi.helsinki.cs.tmc.core.domain.submission.FeedbackAnswer;
 import fi.helsinki.cs.tmc.core.domain.submission.FeedbackQuestion;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 
 import com.google.common.collect.ImmutableList;
 
@@ -25,6 +25,7 @@
 
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 
 import java.net.URI;
 import java.util.List;
@@ -35,7 +36,7 @@ public class SendFeedbackTest {
     @Rule public TemporaryFolder testFolder = new TemporaryFolder();
 
     @Mock ProgressObserver mockObserver;
-    @Mock TmcSettings settings;
+    @Spy TmcSettings settings = new MockSettings();
     @Mock TmcServerCommunicationTaskFactory factory;
     @Mock Course mockCourse;
     @Mock Exercise mockExercise;
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitTest.java
index d202c7e3..9042ab77 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitTest.java
@@ -2,7 +2,6 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verifyZeroInteractions;
@@ -17,6 +16,7 @@
 import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 import fi.helsinki.cs.tmc.core.utils.TestUtils;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutorImpl;
@@ -28,6 +28,7 @@
 
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 
 import java.net.URI;
 import java.nio.file.Path;
@@ -40,7 +41,7 @@ public class SubmitTest {
     @Rule public TemporaryFolder testFolder = new TemporaryFolder();
 
     @Mock ProgressObserver mockObserver;
-    @Mock TmcSettings settings;
+    @Spy TmcSettings settings = new MockSettings();
     @Mock TmcServerCommunicationTaskFactory factory;
     @Mock Course mockCourse;
     @Mock Exercise mockExercise;
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/HttpRequestExecutorTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/HttpRequestExecutorTest.java
index ac03d277..d6d3b886 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/HttpRequestExecutorTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/HttpRequestExecutorTest.java
@@ -6,10 +6,10 @@
 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
 
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 
 import com.github.tomakehurst.wiremock.client.WireMock;
 import com.github.tomakehurst.wiremock.junit.WireMockRule;
@@ -23,15 +23,15 @@
 import org.junit.Rule;
 import org.junit.Test;
 
-import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 
 import java.net.URI;
 import java.nio.charset.Charset;
 
 public class HttpRequestExecutorTest {
 
-    @Mock TmcSettings settings;
+    @Spy TmcSettings settings = new MockSettings();
 
     @Rule public WireMockRule wireMockRule = new WireMockRule(0);
 
@@ -39,7 +39,8 @@ public class HttpRequestExecutorTest {
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
         TmcSettingsHolder.set(settings);
-        verifyNoMoreInteractions(settings);
+//        TODO uncomment this after removing migration from TmcSettingsHolder
+//        verifyNoMoreInteractions(settings);
         wireMockRule.start();
     }
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/holders/TmcSettingsHolderTest.java b/src/test/java/fi/helsinki/cs/tmc/core/holders/TmcSettingsHolderTest.java
index 3830c6ad..7f650cc3 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/holders/TmcSettingsHolderTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/holders/TmcSettingsHolderTest.java
@@ -4,18 +4,19 @@
 
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.exceptions.UninitializedHolderException;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 
 import org.junit.Before;
 import org.junit.Test;
 
-import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 
 public class TmcSettingsHolderTest {
 
     private TmcSettingsHolder holder;
 
-    @Mock private TmcSettings settings;
+    @Spy private TmcSettings settings = new MockSettings();
 
     @Before
     public void setUp() {
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java b/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java
index a639c0b8..5263551e 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java
@@ -15,6 +15,7 @@
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 import fi.helsinki.cs.tmc.spyware.EventSendBuffer;
 import fi.helsinki.cs.tmc.spyware.EventStore;
 import fi.helsinki.cs.tmc.spyware.LoggableEvent;
@@ -30,6 +31,7 @@
 import org.mockito.Captor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 
 import java.io.IOException;
 import java.net.URI;
@@ -46,7 +48,7 @@ public class EventSendBufferTest {
 
     private Course mockCourse;
 
-    @Mock TmcSettings tmcSettings;
+    @Spy TmcSettings tmcSettings = new MockSettings();
     @Mock TmcServerCommunicationTaskFactory factory;
     @Mock private SpywareSettings settings;
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
index ec14433a..9b78fb25 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
@@ -26,7 +26,7 @@ public String getServerAddress() {
 
     @Override
     public Optional<String> getPassword() {
-        throw new UnsupportedOperationException();
+        return Optional.absent();
     }
 
     @Override
@@ -46,7 +46,7 @@ public boolean userDataExists() {
 
     @Override
     public Optional<Course> getCurrentCourse() {
-        throw new UnsupportedOperationException();
+        return null;
     }
 
     @Override
@@ -71,17 +71,17 @@ public String getFormattedUserData() {
 
     @Override
     public Path getTmcProjectDirectory() {
-        throw new UnsupportedOperationException();
+        return null;
     }
 
     @Override
     public Locale getLocale() {
-        throw new UnsupportedOperationException();
+        return null;
     }
 
     @Override
     public SystemDefaultRoutePlanner proxy() {
-        throw new UnsupportedOperationException();
+        return null;
     }
 
     @Override

From a1afa9499338694a2dbe488411a0ba1e92372d93 Mon Sep 17 00:00:00 2001
From: Antti <antti.leinonen@helsinki.fi>
Date: Thu, 16 Feb 2017 16:43:29 +0200
Subject: [PATCH 007/113] New oauth stuff

---
 pom.xml                                       |  2 +-
 .../TmcServerCommunicationTaskFactory.java    |  7 ++++
 .../tmc/core/configuration/TmcSettings.java   |  4 +++
 .../cs/tmc/core/domain/OauthCredentials.java  | 33 +++++++++++++++++++
 4 files changed, 45 insertions(+), 1 deletion(-)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/domain/OauthCredentials.java

diff --git a/pom.xml b/pom.xml
index 16186961..7ea9584c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
 
     <groupId>fi.helsinki.cs.tmc</groupId>
     <artifactId>core</artifactId>
-    <version>0.9.12-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
     <packaging>jar</packaging>
     <name>tmc-core</name>
     <url>http://testmycode.net</url>
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 9b8d00fe..cdc3515f 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -10,6 +10,7 @@
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
+import fi.helsinki.cs.tmc.core.domain.OauthCredentials;
 import fi.helsinki.cs.tmc.core.domain.Review;
 import fi.helsinki.cs.tmc.core.domain.submission.FeedbackAnswer;
 import fi.helsinki.cs.tmc.core.exceptions.FailedHttpResponseException;
@@ -25,6 +26,8 @@
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.google.gson.reflect.TypeToken;
+import java.net.MalformedURLException;
+import org.apache.commons.io.IOUtils;
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
 import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
 
@@ -357,6 +360,10 @@ public Object call() throws Exception {
         });
     }
 
+    public Callable<Void> getOauthCredentialsTask(URI credentialsUrl) throws IOException {
+        OauthCredentials credentials = new Gson().fromJson(IOUtils.toString(credentialsUrl.toURL()), OauthCredentials.class);
+    }
+
     private byte[] eventListToPostBody(List<LoggableEvent> events) throws IOException {
         ByteArrayOutputStream bufferBos = new ByteArrayOutputStream();
         GZIPOutputStream gzos = new GZIPOutputStream(bufferBos);
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
index fc0b0ee5..9e093d8b 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
@@ -68,8 +68,12 @@ public interface TmcSettings {
 
     String getOauthApplicationId();
 
+    void setOauthApplicationId(String oauthApplicationId);
+
     String getOauthSecret();
 
+    void setOauthSecret(String oauthSecret);
+
     void setToken(String token);
 
     Optional<String> getToken();
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/OauthCredentials.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/OauthCredentials.java
new file mode 100644
index 00000000..c85d7ac8
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/OauthCredentials.java
@@ -0,0 +1,33 @@
+package fi.helsinki.cs.tmc.core.domain;
+
+import com.google.gson.annotations.SerializedName;
+import java.io.Serializable;
+
+public class OauthCredentials implements Serializable {
+
+    @SerializedName("application_id")
+    private String oauthApplicationId;
+
+    @SerializedName("secret")
+    private String oauthSecret;
+
+    public OauthCredentials() {
+
+    }
+
+    public void setOauthApplicationId(String oauthApplicationId) {
+        this.oauthApplicationId = oauthApplicationId;
+    }
+
+    public String getOauthApplicationId() {
+        return oauthApplicationId;
+    }
+
+    public void setOauthSecret(String oauthSecret) {
+        this.oauthSecret = oauthSecret;
+    }
+
+    public String getOauthSecret() {
+        return oauthSecret;
+    }
+}

From 3b7a402f2e751dc62f399b12956f6a1c8f691d32 Mon Sep 17 00:00:00 2001
From: Antti Leinonen <antti.leinonen@helsinki.fi>
Date: Fri, 24 Feb 2017 16:57:26 +0200
Subject: [PATCH 008/113] Continued oauth stuff

---
 .../cs/tmc/core/commands/AuthenticateUser.java       |  5 ++++-
 .../TmcServerCommunicationTaskFactory.java           | 12 +++++++++---
 .../cs/tmc/core/configuration/TmcSettings.java       |  2 --
 .../cs/tmc/core/domain/OauthCredentials.java         |  1 +
 .../fi/helsinki/cs/tmc/core/utils/MockSettings.java  | 10 ++++++++++
 5 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUser.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUser.java
index c22476bd..7eb9bb99 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUser.java
@@ -9,6 +9,8 @@
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
 import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
 
+import java.io.IOException;
+
 public class AuthenticateUser extends Command<Void> {
     private String password;
     private final Oauth oauth;
@@ -23,8 +25,9 @@ public AuthenticateUser(ProgressObserver observer, String password, Oauth oauth)
     public Void call() throws AuthenticationFailedException {
         TmcSettings tmcSettings = TmcSettingsHolder.get();
         try {
+            tmcServerCommunicationTaskFactory.getOauthCredentialsTask();
             oauth.fetchNewToken(password);
-        } catch (OAuthSystemException | OAuthProblemException e) {
+        } catch (OAuthSystemException | OAuthProblemException | IOException e) {
             throw new AuthenticationFailedException(e);
         }
         return null;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index cdc3515f..3dcf3d8d 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -26,7 +26,7 @@
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.google.gson.reflect.TypeToken;
-import java.net.MalformedURLException;
+
 import org.apache.commons.io.IOUtils;
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
 import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
@@ -360,8 +360,14 @@ public Object call() throws Exception {
         });
     }
 
-    public Callable<Void> getOauthCredentialsTask(URI credentialsUrl) throws IOException {
-        OauthCredentials credentials = new Gson().fromJson(IOUtils.toString(credentialsUrl.toURL()), OauthCredentials.class);
+    public Callable<Void> getOauthCredentialsTask() throws IOException {
+        URI credentialsUrl = URI.create(
+                settings.getServerAddress() + "/api/v" + API_VERSION
+                        + "/application/" + settings.clientName() + "credentials");
+        OauthCredentials credentials =
+                new Gson().fromJson(
+                        IOUtils.toString(credentialsUrl.toURL()), OauthCredentials.class);
+        return null;
     }
 
     private byte[] eventListToPostBody(List<LoggableEvent> events) throws IOException {
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
index 9e093d8b..1838b05d 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
@@ -30,8 +30,6 @@ public interface TmcSettings {
 
     Optional<Course> getCurrentCourse();
 
-    String apiVersion();
-
     String clientName();
 
     String clientVersion();
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/OauthCredentials.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/OauthCredentials.java
index c85d7ac8..ec81a7dd 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/OauthCredentials.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/OauthCredentials.java
@@ -1,6 +1,7 @@
 package fi.helsinki.cs.tmc.core.domain;
 
 import com.google.gson.annotations.SerializedName;
+
 import java.io.Serializable;
 
 public class OauthCredentials implements Serializable {
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
index 9b78fb25..938c67c6 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
@@ -109,11 +109,21 @@ public String getOauthApplicationId() {
         throw new UnsupportedOperationException();
     }
 
+    @Override
+    public void setOauthApplicationId(String oauthApplicationId) {
+
+    }
+
     @Override
     public String getOauthSecret() {
         throw new UnsupportedOperationException();
     }
 
+    @Override
+    public void setOauthSecret(String oauthSecret) {
+
+    }
+
     @Override
     public void setToken(String token) {
         this.token = Optional.of(token);

From aa0419552994fb3e32a82c2e3db37374fa4f814f Mon Sep 17 00:00:00 2001
From: Antti Leinonen <antti.leinonen@helsinki.fi>
Date: Tue, 28 Feb 2017 13:14:55 +0200
Subject: [PATCH 009/113] Fix tests

---
 .../cs/tmc/core/commands/AuthenticateUser.java    | 11 +++++++++++
 .../TmcServerCommunicationTaskFactory.java        | 11 +++++++++--
 .../tmc/core/commands/AuthenticateUserTest.java   | 15 ++++++++++++---
 .../tmc/core/communication/oauth2/OauthTest.java  |  2 +-
 .../helsinki/cs/tmc/core/utils/MockSettings.java  |  5 -----
 5 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUser.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUser.java
index 7eb9bb99..88b1d4fe 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUser.java
@@ -1,11 +1,14 @@
 package fi.helsinki.cs.tmc.core.commands;
 
+import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.exceptions.AuthenticationFailedException;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 
+import com.google.common.annotations.VisibleForTesting;
+
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
 import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
 
@@ -21,6 +24,14 @@ public AuthenticateUser(ProgressObserver observer, String password, Oauth oauth)
         this.oauth = oauth;
     }
 
+    @VisibleForTesting
+    AuthenticateUser(ProgressObserver observer, String password, Oauth oauth,
+                      TmcServerCommunicationTaskFactory tmcServerCommunicationTaskFactory) {
+        super(observer, tmcServerCommunicationTaskFactory);
+        this.password = password;
+        this.oauth = oauth;
+    }
+
     @Override
     public Void call() throws AuthenticationFailedException {
         TmcSettings tmcSettings = TmcSettingsHolder.get();
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 3dcf3d8d..35999791 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -361,9 +361,16 @@ public Object call() throws Exception {
     }
 
     public Callable<Void> getOauthCredentialsTask() throws IOException {
-        URI credentialsUrl = URI.create(
+        URI credentialsUrl;
+        if (settings.getServerAddress().endsWith("/")) {
+            credentialsUrl = URI.create(
+                settings.getServerAddress() + "api/v" + API_VERSION
+                    + "/application/" + settings.clientName() + "/credentials");
+        } else {
+            credentialsUrl = URI.create(
                 settings.getServerAddress() + "/api/v" + API_VERSION
-                        + "/application/" + settings.clientName() + "credentials");
+                    + "/application/" + settings.clientName() + "/credentials");
+        }
         OauthCredentials credentials =
                 new Gson().fromJson(
                         IOUtils.toString(credentialsUrl.toURL()), OauthCredentials.class);
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
index 08a28232..d0775c4b 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
@@ -3,7 +3,9 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.when;
 
+import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
@@ -22,6 +24,8 @@
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
+import java.io.IOException;
+
 public class AuthenticateUserTest {
     @Mock
     ProgressObserver mockObserver;
@@ -29,11 +33,13 @@ public class AuthenticateUserTest {
     TmcSettings settings;
     @Mock
     Oauth oauth;
+    @Mock
+    TmcServerCommunicationTaskFactory tmcServerCommunicationTaskFactory;
 
     private Command<Void> command;
 
     @Before
-    public void setUp() throws OAuthProblemException, OAuthSystemException {
+    public void setUp() throws OAuthProblemException, OAuthSystemException, IOException {
         MockitoAnnotations.initMocks(this);
         settings = new MockSettings();
         TmcSettingsHolder.set(settings);
@@ -50,11 +56,13 @@ public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
                 throw new OAuthSystemException();
             }
         }).when(oauth).fetchNewToken("wrongPassword");
+        when(tmcServerCommunicationTaskFactory.getOauthCredentialsTask()).thenReturn(null);
     }
 
     @Test
     public void testCallSucceeds() throws Exception {
-        command = new AuthenticateUser(mockObserver, "password", oauth);
+        command = new AuthenticateUser(mockObserver, "password",
+                                        oauth, tmcServerCommunicationTaskFactory);
         command.call();
         assertTrue(settings.getToken().isPresent());
         assertEquals(settings.getToken().get(), "testToken");
@@ -62,7 +70,8 @@ public void testCallSucceeds() throws Exception {
 
     @Test(expected = AuthenticationFailedException.class)
     public void testCallFails() throws Exception {
-        command = new AuthenticateUser(mockObserver, "wrongPassword", oauth);
+        command = new AuthenticateUser(mockObserver, "wrongPassword",
+                                        oauth, tmcServerCommunicationTaskFactory);
         command.call();
     }
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
index 4cce45fe..c397b976 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
@@ -38,7 +38,7 @@ public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
         settings = new MockSettings();
         TmcSettingsHolder.set(settings);
-        oauth = spy(Oauth.getInstance());
+        oauth = spy(new Oauth());
         doAnswer(new Answer() {
             @Override
             public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
index 938c67c6..dc5c74aa 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
@@ -49,11 +49,6 @@ public Optional<Course> getCurrentCourse() {
         return null;
     }
 
-    @Override
-    public String apiVersion() {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public String clientName() {
         return "testClient";

From c7641f321a84c74564aabddbc0727b0610f59422 Mon Sep 17 00:00:00 2001
From: Antti Leinonen <antti.leinonen@helsinki.fi>
Date: Wed, 1 Mar 2017 15:35:33 +0200
Subject: [PATCH 010/113] Remove OauthTokenUrl from TmcSettings and add few
 tests

---
 .../tmc/core/communication/oauth2/Oauth.java   | 18 +++++++++---------
 .../cs/tmc/core/configuration/TmcSettings.java |  2 --
 .../core/commands/AuthenticateUserTest.java    | 10 ++++++++++
 .../core/communication/oauth2/OauthTest.java   | 13 ++++++++++---
 .../cs/tmc/core/utils/MockSettings.java        |  5 -----
 5 files changed, 29 insertions(+), 19 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
index 66429338..eb23c0c4 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
@@ -71,8 +71,16 @@ public boolean hasToken() {
      */
     public void fetchNewToken(String password) throws OAuthSystemException, OAuthProblemException {
         log.info("Fetching new oauth token from server");
+
+        String oauthTokenUrl;
+        if (settings.getServerAddress().endsWith("/")) {
+            oauthTokenUrl = settings.getServerAddress() + "oauth/token";
+        } else {
+            oauthTokenUrl = settings.getServerAddress() + "/oauth/token";
+        }
+
         OAuthClientRequest request = OAuthClientRequest
-                .tokenLocation(settings.getOauthTokenUrl())
+                .tokenLocation(oauthTokenUrl)
                 .setGrantType(GrantType.PASSWORD)
                 .setClientId(settings.getOauthApplicationId())
                 .setClientSecret(settings.getOauthSecret())
@@ -82,14 +90,6 @@ public void fetchNewToken(String password) throws OAuthSystemException, OAuthPro
         OAuthClient client = new OAuthClient(new URLConnectionClient());
         String token = client.accessToken(request, OAuthJSONAccessTokenResponse.class)
                 .getAccessToken();
-        setToken(token);
-    }
-
-    /**
-     * Sets given oauth token to TmcSettings.
-     * @param token to be set to settings
-     */
-    private void setToken(String token) {
         settings.setToken(token);
     }
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
index 1838b05d..40bcd9d3 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
@@ -62,8 +62,6 @@ public interface TmcSettings {
 
     boolean getSendDiagnostics();
 
-    String getOauthTokenUrl();
-
     String getOauthApplicationId();
 
     void setOauthApplicationId(String oauthApplicationId);
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
index d0775c4b..1333678a 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
@@ -3,6 +3,8 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
@@ -74,4 +76,12 @@ public void testCallFails() throws Exception {
                                         oauth, tmcServerCommunicationTaskFactory);
         command.call();
     }
+
+    @Test
+    public void callsTmcServerCommunicationTaskFactorysGetOauthCredentialsTask() throws Exception {
+        command = new AuthenticateUser(mockObserver, "password",
+                                        oauth, tmcServerCommunicationTaskFactory);
+        command.call();
+        verify(tmcServerCommunicationTaskFactory, times(1)).getOauthCredentialsTask();
+    }
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
index c397b976..8c3ddebd 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
@@ -11,6 +11,7 @@
 import static org.mockito.Mockito.verify;
 
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utils.MockSettings;
 
@@ -36,7 +37,7 @@ public class OauthTest {
     @Before
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
-        settings = new MockSettings();
+        settings = spy(new MockSettings());
         TmcSettingsHolder.set(settings);
         oauth = spy(new Oauth());
         doAnswer(new Answer() {
@@ -56,11 +57,11 @@ public void tearDown() throws NoSuchFieldException, IllegalAccessException {
     }
 
     @Test
-    public void hasTokenWhenFetched() {
+    public void hasTokenWhenFetched() throws NotLoggedInException {
         try {
             oauth.fetchNewToken("password");
             assertTrue(oauth.hasToken());
-            assertEquals("testToken", settings.getToken().get());
+            assertEquals("testToken", oauth.getToken());
         } catch (OAuthSystemException | OAuthProblemException ex) {
             fail("Got exception: " + ex.toString());
         }
@@ -71,4 +72,10 @@ public void hasNoTokenWhenInitialized() throws Exception {
         assertFalse(oauth.hasToken());
         verify(oauth, times(0)).fetchNewToken(anyString());
     }
+
+    @Test
+    public void setsTokenToSettings() throws OAuthProblemException, OAuthSystemException {
+        oauth.fetchNewToken("password");
+        verify(settings, times(1)).setToken(anyString());
+    }
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
index dc5c74aa..470d0b79 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
@@ -94,11 +94,6 @@ public Path getConfigRoot() {
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public String getOauthTokenUrl() {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public String getOauthApplicationId() {
         throw new UnsupportedOperationException();

From 887f048cf7e7f8cec4ad198efebacb8cf65bcb01 Mon Sep 17 00:00:00 2001
From: Antti Leinonen <antti.leinonen@helsinki.fi>
Date: Wed, 5 Apr 2017 17:09:39 +0300
Subject: [PATCH 011/113] Normalize server address, dont send crashes when
 NotLoggedInException

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |   2 +
 .../TmcServerCommunicationTaskFactory.java    |  10 +-
 .../tmc/core/communication/oauth2/Oauth.java  |   7 +-
 .../tmc/core/configuration/TmcSettings.java   |  15 +-
 .../cs/tmc/core/domain/OauthCredentials.java  |   5 +
 .../utilities/ExceptionTrackingCallable.java  |   3 +-
 .../utilities/TmcServerAddressNormalizer.java |  30 +++
 .../core/commands/SendDiagnosticsTest.java    |   9 +-
 .../ExceptionTrackingCallableTest.java        |  12 +-
 .../cs/tmc/core/utils/MockSettings.java       |  39 +++-
 tmc-core.iml                                  | 179 ------------------
 11 files changed, 93 insertions(+), 218 deletions(-)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/utilities/TmcServerAddressNormalizer.java
 delete mode 100644 tmc-core.iml

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 7e3a2312..15999979 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -29,6 +29,7 @@
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utilities.ExceptionTrackingCallable;
+import fi.helsinki.cs.tmc.core.utilities.TmcServerAddressNormalizer;
 import fi.helsinki.cs.tmc.langs.abstraction.ValidationResult;
 import fi.helsinki.cs.tmc.langs.domain.RunResult;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
@@ -74,6 +75,7 @@ public TmcCore() {}
     public TmcCore(TmcSettings settings, TaskExecutor tmcLangs) {
         TmcSettingsHolder.set(settings);
         TmcLangsHolder.set(tmcLangs);
+        TmcServerAddressNormalizer.normalize();
     }
 
     public Callable<Void> authenticate(ProgressObserver observer, String password) {
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 35999791..2019d853 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -122,20 +122,19 @@ private URI getCourseListUrl()
         throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
         String serverAddress = settings.getServerAddress();
         String url;
+        String urlLastPart = "api/v" + API_VERSION + "/core/org/" + settings.getOrganization() + "/courses.json";
         if (serverAddress.endsWith("/")) {
-            url = serverAddress + "courses.json";
+            url = serverAddress + urlLastPart;
         } else {
-            url = serverAddress + "/courses.json";
+            url = serverAddress + "/" + urlLastPart;
         }
         return addApiCallQueryParameters(URI.create(url));
     }
 
     private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
-        url = UriUtils.withQueryParam(url, "api_version", "" + API_VERSION);
         url = UriUtils.withQueryParam(url, "client", settings.clientName());
         url = UriUtils.withQueryParam(url, "client_version", clientVersion);
-        String token = oauth.getToken();
-        url = UriUtils.withQueryParam(url, "access_token", token);
+        url = UriUtils.withQueryParam(url, "access_token", oauth.getToken());
         return url;
     }
 
@@ -374,6 +373,7 @@ public Callable<Void> getOauthCredentialsTask() throws IOException {
         OauthCredentials credentials =
                 new Gson().fromJson(
                         IOUtils.toString(credentialsUrl.toURL()), OauthCredentials.class);
+        settings.setOauthCredentials(credentials);
         return null;
     }
 
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
index eb23c0c4..90d3753c 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
@@ -1,6 +1,7 @@
 package fi.helsinki.cs.tmc.core.communication.oauth2;
 
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.domain.OauthCredentials;
 import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
@@ -79,13 +80,15 @@ public void fetchNewToken(String password) throws OAuthSystemException, OAuthPro
             oauthTokenUrl = settings.getServerAddress() + "/oauth/token";
         }
 
+        OauthCredentials credentials = settings.getOauthCredentials();
         OAuthClientRequest request = OAuthClientRequest
                 .tokenLocation(oauthTokenUrl)
                 .setGrantType(GrantType.PASSWORD)
-                .setClientId(settings.getOauthApplicationId())
-                .setClientSecret(settings.getOauthSecret())
+                .setClientId(credentials.getOauthApplicationId())
+                .setClientSecret(credentials.getOauthSecret())
                 .setUsername(settings.getUsername())
                 .setPassword(password)
+                .setRedirectURI("urn:ietf:wg:oauth:2.0:oob")
                 .buildQueryMessage();
         OAuthClient client = new OAuthClient(new URLConnectionClient());
         String token = client.accessToken(request, OAuthJSONAccessTokenResponse.class)
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
index 40bcd9d3..96b3bea9 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
@@ -1,6 +1,7 @@
 package fi.helsinki.cs.tmc.core.configuration;
 
 import fi.helsinki.cs.tmc.core.domain.Course;
+import fi.helsinki.cs.tmc.core.domain.OauthCredentials;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
@@ -14,6 +15,8 @@ public interface TmcSettings {
 
     String getServerAddress();
 
+    void setServerAddress(String address);
+
     /**
      * Used for old login credentials, new ones use oauth.
      */
@@ -62,15 +65,15 @@ public interface TmcSettings {
 
     boolean getSendDiagnostics();
 
-    String getOauthApplicationId();
-
-    void setOauthApplicationId(String oauthApplicationId);
-
-    String getOauthSecret();
+    OauthCredentials getOauthCredentials();
 
-    void setOauthSecret(String oauthSecret);
+    void setOauthCredentials(OauthCredentials credentials);
 
     void setToken(String token);
 
     Optional<String> getToken();
+
+    String getOrganization();
+
+    void setOrganization(String organization);
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/OauthCredentials.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/OauthCredentials.java
index ec81a7dd..530429f7 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/OauthCredentials.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/OauthCredentials.java
@@ -16,6 +16,11 @@ public OauthCredentials() {
 
     }
 
+    public OauthCredentials(String oauthApplicationId, String oauthSecret) {
+        this.oauthApplicationId = oauthApplicationId;
+        this.oauthSecret = oauthSecret;
+    }
+
     public void setOauthApplicationId(String oauthApplicationId) {
         this.oauthApplicationId = oauthApplicationId;
     }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/utilities/ExceptionTrackingCallable.java b/src/main/java/fi/helsinki/cs/tmc/core/utilities/ExceptionTrackingCallable.java
index d5f9541b..364bdda4 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/utilities/ExceptionTrackingCallable.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/utilities/ExceptionTrackingCallable.java
@@ -3,6 +3,7 @@
 import fi.helsinki.cs.tmc.core.communication.TmcBandicootCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.bandicoot.Crash;
+import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 
 import com.google.common.annotations.VisibleForTesting;
@@ -33,7 +34,7 @@ public T call() throws Exception {
         try {
             return command.call();
         } catch (Exception ex) {
-            if (settings.getSendDiagnostics()) {
+            if (settings.getSendDiagnostics() && !(ex instanceof NotLoggedInException)) {
                 tmcBandicootCommunicationTaskFactory.sendCrash(new Crash(ex)).call();
             }
             throw ex;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/utilities/TmcServerAddressNormalizer.java b/src/main/java/fi/helsinki/cs/tmc/core/utilities/TmcServerAddressNormalizer.java
new file mode 100644
index 00000000..fc0278fe
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/utilities/TmcServerAddressNormalizer.java
@@ -0,0 +1,30 @@
+package fi.helsinki.cs.tmc.core.utilities;
+
+import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+
+public class TmcServerAddressNormalizer {
+
+    public static void normalize() {
+        TmcSettings tmcSettings = TmcSettingsHolder.get();
+        String address = tmcSettings.getServerAddress();
+
+        if (!address.contains("/org/") && address.contains("/hy")) {
+            int last = address.lastIndexOf("/");
+            tmcSettings.setServerAddress(address.substring(0, last));
+            tmcSettings.setOrganization(address.substring(last + 1, address.length()));
+        } else if (!address.contains("/org/")) {
+            return;
+        } else {
+            String[] split = address.split("/org/");
+
+            tmcSettings.setServerAddress(split[0]);
+
+            String organization = split[1];
+            if (organization.charAt(organization.length() - 1) == '/') {
+                organization = organization.substring(0, organization.length());
+            }
+            tmcSettings.setOrganization(organization);
+        }
+    }
+}
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SendDiagnosticsTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SendDiagnosticsTest.java
index 96b2d38f..0933f02c 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SendDiagnosticsTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SendDiagnosticsTest.java
@@ -4,13 +4,13 @@
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
 
 import fi.helsinki.cs.tmc.core.communication.TmcBandicootCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.domain.bandicoot.Diagnostics;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -20,12 +20,10 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-import java.util.Locale;
 import java.util.concurrent.Callable;
 
 public class SendDiagnosticsTest {
 
-    @Mock
     TmcSettings settings;
 
     @Mock
@@ -40,11 +38,8 @@ public class SendDiagnosticsTest {
     @Before
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
+        this.settings = new MockSettings();
         TmcSettingsHolder.set(settings);
-        when(settings.getServerAddress()).thenReturn("testAddress");
-        when(settings.clientName()).thenReturn("testClient");
-        when(settings.clientVersion()).thenReturn("testVersion");
-        when(settings.getLocale()).thenReturn(new Locale("en"));
         doReturn(new Callable() {
             @Override
             public Object call() throws Exception {
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/utilities/ExceptionTrackingCallableTest.java b/src/test/java/fi/helsinki/cs/tmc/core/utilities/ExceptionTrackingCallableTest.java
index e91d7e88..da9532ed 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/utilities/ExceptionTrackingCallableTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/utilities/ExceptionTrackingCallableTest.java
@@ -8,19 +8,17 @@
 import fi.helsinki.cs.tmc.core.domain.bandicoot.Crash;
 import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
 
 import org.junit.Before;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-import java.util.Locale;
 import java.util.concurrent.Callable;
 
 public class ExceptionTrackingCallableTest {
 
-    @Mock
     TmcSettings settings;
     @Mock
     TmcBandicootCommunicationTaskFactory factory;
@@ -28,14 +26,8 @@ public class ExceptionTrackingCallableTest {
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
+        this.settings = new MockSettings();
         TmcSettingsHolder.set(settings);
-        when(settings.getServerAddress()).thenReturn("testAddress");
-        when(settings.clientName()).thenReturn("testClient");
-        when(settings.clientVersion()).thenReturn("testVersion");
-        when(settings.hostProgramName()).thenReturn("testHostProgram");
-        when(settings.hostProgramVersion()).thenReturn("testHostProgramVersion");
-        when(settings.getLocale()).thenReturn(new Locale("en"));
-        when(settings.getSendDiagnostics()).thenReturn(true);
         when(factory.sendCrash(any(Crash.class))).thenReturn(new Callable<Void>() {
             @Override public Void call() throws Exception {
                 return null;
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
index 470d0b79..4969bdf4 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
@@ -2,6 +2,7 @@
 
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
+import fi.helsinki.cs.tmc.core.domain.OauthCredentials;
 
 import com.google.common.base.Optional;
 
@@ -24,6 +25,11 @@ public String getServerAddress() {
         return "testAddress";
     }
 
+    @Override
+    public void setServerAddress(String address) {
+
+    }
+
     @Override
     public Optional<String> getPassword() {
         return Optional.absent();
@@ -56,7 +62,7 @@ public String clientName() {
 
     @Override
     public String clientVersion() {
-        return "testClient";
+        return "testVersion";
     }
 
     @Override
@@ -71,7 +77,7 @@ public Path getTmcProjectDirectory() {
 
     @Override
     public Locale getLocale() {
-        return null;
+        return new Locale("en");
     }
 
     @Override
@@ -95,22 +101,30 @@ public Path getConfigRoot() {
     }
 
     @Override
-    public String getOauthApplicationId() {
-        throw new UnsupportedOperationException();
+    public String hostProgramName() {
+        return "testHostProgram";
     }
 
     @Override
-    public void setOauthApplicationId(String oauthApplicationId) {
+    public String hostProgramVersion() {
+        return "testHostProgramVersion";
+    }
 
+    @Override
+    public boolean getSendDiagnostics() {
+        return true;
     }
 
     @Override
-    public String getOauthSecret() {
-        throw new UnsupportedOperationException();
+    public OauthCredentials getOauthCredentials() {
+        OauthCredentials credentials = new OauthCredentials();
+        credentials.setOauthApplicationId("testOauthApplicationId");
+        credentials.setOauthSecret("testOauthSecret");
+        return credentials;
     }
 
     @Override
-    public void setOauthSecret(String oauthSecret) {
+    public void setOauthCredentials(OauthCredentials credentials) {
 
     }
 
@@ -123,4 +137,13 @@ public void setToken(String token) {
     public Optional<String> getToken() {
         return token;
     }
+
+    @Override
+    public String getOrganization() {
+        return "testOrganization";
+    }
+
+    @Override
+    public void setOrganization(String organization) {
+    }
 }
diff --git a/tmc-core.iml b/tmc-core.iml
deleted file mode 100644
index 85a232b4..00000000
--- a/tmc-core.iml
+++ /dev/null
@@ -1,179 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" name="Maven: com.puppycrawl.tools:checkstyle:6.6" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.4" level="project" />
-    <orderEntry type="library" name="Maven: org.antlr:antlr4-runtime:4.5" level="project" />
-    <orderEntry type="library" name="Maven: org.abego.treelayout:org.abego.treelayout.core:1.0.1" level="project" />
-    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils-core:1.8.3" level="project" />
-    <orderEntry type="library" name="Maven: fi.helsinki.cs.tmc:tmc-langs-framework:1.0-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: fi.helsinki.cs.tmc:tmc-checkstyle-runner:1.0.2" level="project" />
-    <orderEntry type="library" name="Maven: fi.helsinki.cs.tmc:tmc-langs-make:1.0-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: fi.helsinki.cs.tmc:tmc-langs-java:1.0-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.ant:ant:1.9.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.ant:ant-launcher:1.9.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-embedder:3.2.5" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-settings:3.2.5" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-model-builder:3.2.5" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.maven:maven-compat:3.2.5" level="project" />
-    <orderEntry type="library" name="Maven: org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.0.M1" level="project" />
-    <orderEntry type="library" name="Maven: org.eclipse.sisu:org.eclipse.sisu.inject:0.3.0.M1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-aether-provider:3.2.5" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-repository-metadata:3.2.5" level="project" />
-    <orderEntry type="library" name="Maven: org.eclipse.aether:aether-api:1.0.0.v20140518" level="project" />
-    <orderEntry type="library" name="Maven: org.eclipse.aether:aether-spi:1.0.0.v20140518" level="project" />
-    <orderEntry type="library" name="Maven: org.eclipse.aether:aether-util:1.0.0.v20140518" level="project" />
-    <orderEntry type="library" name="Maven: org.eclipse.aether:aether-impl:1.0.0.v20140518" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven.wagon:wagon-http-lightweight:2.9" level="project" />
-    <orderEntry type="library" name="Maven: fi.helsinki.cs.tmc:tmc-langs-util:1.0-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: com.github.stefanbirkner:system-rules:1.8.0" level="project" />
-    <orderEntry type="library" name="Maven: net.lingala.zip4j:zip4j:1.3.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: info.cukes:cucumber-junit:1.2.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: info.cukes:cucumber-core:1.2.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: info.cukes:cucumber-html:0.2.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: info.cukes:cucumber-jvm-deps:1.0.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: info.cukes:gherkin:2.12.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: info.cukes:cucumber-java:1.2.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.powermock:powermock-api-mockito:1.5" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.powermock:powermock-api-support:1.5" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.powermock:powermock-core:1.5" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.powermock:powermock-reflect:1.5" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:1.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.javassist:javassist:3.17.1-GA" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.powermock:powermock-module-junit4:1.5" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.powermock:powermock-module-junit4-common:1.5" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: com.github.tomakehurst:wiremock:standalone:1.55" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-plugin-api:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-artifact:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.plexus:plexus-interpolation:1.11" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-model:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-core:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-plugin-parameter-documenter:2.2.1" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.maven.wagon:wagon-webdav-jackrabbit:1.0-beta-6" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.jackrabbit:jackrabbit-webdav:1.5.0" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.jackrabbit:jackrabbit-jcr-commons:1.5.0" level="project" />
-    <orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven.reporting:maven-reporting-api:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven.doxia:doxia-logging-api:1.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-error-diagnostics:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-monitor:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: classworlds:classworlds:1.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.4.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.1" level="project" />
-    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-core:3.3.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-model:3.3.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-settings:3.3.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-settings-builder:3.3.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-builder-support:3.3.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-repository-metadata:3.3.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-artifact:3.3.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-plugin-api:3.3.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-model-builder:3.3.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-aether-provider:3.3.3" level="project" />
-    <orderEntry type="library" name="Maven: org.eclipse.aether:aether-impl:1.0.2.v20150114" level="project" />
-    <orderEntry type="library" name="Maven: org.eclipse.aether:aether-api:1.0.2.v20150114" level="project" />
-    <orderEntry type="library" name="Maven: org.eclipse.aether:aether-util:1.0.2.v20150114" level="project" />
-    <orderEntry type="library" name="Maven: org.sonatype.sisu:sisu-guice:no_aop:3.2.5" level="project" />
-    <orderEntry type="library" name="Maven: javax.inject:javax.inject:1" level="project" />
-    <orderEntry type="library" name="Maven: aopalliance:aopalliance:1.0" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.plexus:plexus-interpolation:1.21" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.plexus:plexus-utils:3.0.20" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.plexus:plexus-classworlds:2.5.2" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.plexus:plexus-component-annotations:1.5.5" level="project" />
-    <orderEntry type="library" name="Maven: org.sonatype.plexus:plexus-sec-dispatcher:1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.eclipse.sisu:org.eclipse.sisu.inject:0.3.1" level="project" />
-    <orderEntry type="library" name="Maven: org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.1" level="project" />
-    <orderEntry type="library" name="Maven: javax.enterprise:cdi-api:1.0" level="project" />
-    <orderEntry type="library" name="Maven: javax.annotation:jsr250-api:1.0" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.12" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.slf4j:slf4j-log4j12:1.7.12" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: log4j:log4j:1.2.17" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-embedder:3.3.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven:maven-compat:3.3.3" level="project" />
-    <orderEntry type="library" name="Maven: org.sonatype.plexus:plexus-cipher:1.7" level="project" />
-    <orderEntry type="library" name="Maven: commons-cli:commons-cli:1.2" level="project" />
-    <orderEntry type="library" name="Maven: org.eclipse.aether:aether-connector-basic:1.0.2.v20150114" level="project" />
-    <orderEntry type="library" name="Maven: org.eclipse.aether:aether-spi:1.0.2.v20150114" level="project" />
-    <orderEntry type="library" name="Maven: org.eclipse.aether:aether-transport-wagon:1.0.2.v20150114" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven.wagon:wagon-http:2.9" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven.wagon:wagon-http-shared:2.9" level="project" />
-    <orderEntry type="library" name="Maven: org.jsoup:jsoup:1.7.2" level="project" />
-    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.maven.wagon:wagon-provider-api:2.9" level="project" />
-    <orderEntry type="library" name="Maven: fi.helsinki.cs.tmc:tmc-langs-abstraction:1.0.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.4.1.3" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.4.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.4.1.1" level="project" />
-    <orderEntry type="library" name="Maven: fi.helsinki.cs.tmc:tmc-langs-util:0.7.7-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: fi.helsinki.cs.tmc:tmc-langs-framework:0.7.7-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.9" level="project" />
-    <orderEntry type="library" name="Maven: fi.helsinki.cs.tmc:tmc-langs-java:0.7.7-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.ant:ant:1.9.6" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.ant:ant-launcher:1.9.6" level="project" />
-    <orderEntry type="library" name="Maven: org.rauschig:jarchivelib:0.7.1" level="project" />
-    <orderEntry type="library" name="Maven: fi.helsinki.cs.tmc:tmc-checkstyle-runner:3.0.3-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.4.1" level="project" />
-    <orderEntry type="module-library">
-      <library name="Maven: com.sun:tools:1.6.0">
-        <CLASSES>
-          <root url="jar:///usr/lib/jvm/java-8-jdk/lib/tools.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="library" name="Maven: org.apache.maven.shared:maven-invoker:2.2" level="project" />
-    <orderEntry type="library" name="Maven: fi.helsinki.cs.tmc:tmc-langs-make:0.7.7-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: fi.helsinki.cs.tmc:tmc-langs-python3:0.7.7-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: fi.helsinki.cs.tmc:tmc-langs-notests:0.7.7-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: com.github.stefanbirkner:system-rules:1.12.1" level="project" />
-    <orderEntry type="library" name="Maven: com.puppycrawl.tools:checkstyle:6.17" level="project" />
-    <orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
-    <orderEntry type="library" name="Maven: org.antlr:antlr4-runtime:4.5.2-1" level="project" />
-    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.2" level="project" />
-    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.5" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.slf4j:slf4j-jdk14:1.7.12" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.slf4j:slf4j-nop:1.7.12" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.slf4j:jcl-over-slf4j:1.7.12" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.3.1" level="project" />
-    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.10" level="project" />
-    <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
-    <orderEntry type="library" name="Maven: junit:junit:4.11" level="project" />
-    <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.mockito:mockito-all:1.9.5" level="project" />
-    <orderEntry type="library" name="Maven: com.google.truth:truth:0.28" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.13" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: com.github.tomakehurst:wiremock:standalone:1.57" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.apache.maven.surefire:maven-surefire-common:2.18.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.apache.maven.plugin-tools:maven-plugin-annotations:3.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.apache.maven.surefire:surefire-api:2.18.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.apache.maven.surefire:surefire-booter:2.18.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.apache.maven:maven-plugin-descriptor:2.2.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.codehaus.plexus:plexus-container-default:1.0-alpha-9-stable-1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: classworlds:classworlds:1.1-alpha-2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.apache.maven:maven-project:2.2.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.apache.maven:maven-profile:2.2.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.apache.maven:maven-artifact-manager:2.2.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: backport-util-concurrent:backport-util-concurrent:3.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.apache.maven:maven-plugin-registry:2.2.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.apache.maven:maven-toolchain:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.1" level="project" />
-    <orderEntry type="library" name="Maven: com.google.guava:guava:19.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.3.5" level="project" />
-    <orderEntry type="library" name="Maven: fi.helsinki.cs.tmc:tmc-junit-runner:0.2.5" level="project" />
-  </component>
-</module>
\ No newline at end of file

From 3b133064374d37f02e17892afd1066671f78fb86 Mon Sep 17 00:00:00 2001
From: Antti Leinonen <antti.leinonen@helsinki.fi>
Date: Mon, 15 May 2017 10:52:11 +0300
Subject: [PATCH 012/113] Functionality for getting organizations and courses
 from server

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |  7 +++
 .../tmc/core/commands/GetOrganizations.java   | 26 ++++++++++
 .../TmcServerCommunicationTaskFactory.java    | 15 ++++++
 .../tmc/core/configuration/TmcSettings.java   |  1 +
 .../helsinki/cs/tmc/core/domain/Course.java   | 18 +++++++
 .../cs/tmc/core/domain/Organization.java      | 49 +++++++++++++++++++
 .../utilities/TmcServerAddressNormalizer.java |  1 +
 .../core/commands/GetOrganizationsTest.java   | 49 +++++++++++++++++++
 .../cs/tmc/core/utils/MockSettings.java       |  1 +
 9 files changed, 167 insertions(+)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/commands/GetOrganizations.java
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/domain/Organization.java
 create mode 100644 src/test/java/fi/helsinki/cs/tmc/core/commands/GetOrganizationsTest.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 15999979..54fae4df 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -5,6 +5,7 @@
 import fi.helsinki.cs.tmc.core.commands.DownloadModelSolution;
 import fi.helsinki.cs.tmc.core.commands.DownloadOrUpdateExercises;
 import fi.helsinki.cs.tmc.core.commands.GetCourseDetails;
+import fi.helsinki.cs.tmc.core.commands.GetOrganizations;
 import fi.helsinki.cs.tmc.core.commands.GetUnreadReviews;
 import fi.helsinki.cs.tmc.core.commands.GetUpdatableExercises;
 import fi.helsinki.cs.tmc.core.commands.ListCourses;
@@ -22,6 +23,7 @@
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
+import fi.helsinki.cs.tmc.core.domain.Organization;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.domain.Review;
 import fi.helsinki.cs.tmc.core.domain.submission.FeedbackAnswer;
@@ -78,6 +80,11 @@ public TmcCore(TmcSettings settings, TaskExecutor tmcLangs) {
         TmcServerAddressNormalizer.normalize();
     }
 
+    public Callable<List<Organization>> getOrganizations(ProgressObserver observer) {
+        logger.info("Creating new GetOrganizations command");
+        return new GetOrganizations(observer);
+    }
+
     public Callable<Void> authenticate(ProgressObserver observer, String password) {
         logger.info("Creating new AuthenticateUser command");
         return new AuthenticateUser(observer, password, Oauth.getInstance());
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/GetOrganizations.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/GetOrganizations.java
new file mode 100644
index 00000000..1172e889
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/GetOrganizations.java
@@ -0,0 +1,26 @@
+package fi.helsinki.cs.tmc.core.commands;
+
+import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.domain.Organization;
+import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+
+import com.google.common.annotations.VisibleForTesting;
+
+import java.util.List;
+
+public class GetOrganizations extends Command<List<Organization>> {
+
+    public GetOrganizations(ProgressObserver observer) {
+        super(observer);
+    }
+
+    @VisibleForTesting
+    GetOrganizations(ProgressObserver observer, TmcServerCommunicationTaskFactory tmcServerCommunicationTaskFactory) {
+        super(observer, tmcServerCommunicationTaskFactory);
+    }
+
+    @Override
+    public List<Organization> call() throws Exception {
+        return tmcServerCommunicationTaskFactory.getOrganizationListTask();
+    }
+}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 2019d853..0b9d00ce 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -11,6 +11,7 @@
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.OauthCredentials;
+import fi.helsinki.cs.tmc.core.domain.Organization;
 import fi.helsinki.cs.tmc.core.domain.Review;
 import fi.helsinki.cs.tmc.core.domain.submission.FeedbackAnswer;
 import fi.helsinki.cs.tmc.core.exceptions.FailedHttpResponseException;
@@ -377,6 +378,20 @@ public Callable<Void> getOauthCredentialsTask() throws IOException {
         return null;
     }
 
+    public List<Organization> getOrganizationListTask() throws IOException {
+        String url;
+        String serverAddress = settings.getServerAddress();
+        String urlLastPart = "api/v" + API_VERSION + "/org";
+        if (serverAddress.endsWith("/")) {
+            url = settings.getServerAddress() + urlLastPart;
+        } else {
+            url = serverAddress + "/" + urlLastPart;
+        }
+        URI organizationUrl = URI.create(url);
+        List<Organization> organizations = new Gson().fromJson(IOUtils.toString(organizationUrl.toURL()), new TypeToken<List<Organization>>(){}.getType());
+        return organizations;
+    }
+
     private byte[] eventListToPostBody(List<LoggableEvent> events) throws IOException {
         ByteArrayOutputStream bufferBos = new ByteArrayOutputStream();
         GZIPOutputStream gzos = new GZIPOutputStream(bufferBos);
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
index 96b3bea9..67f35818 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
@@ -2,6 +2,7 @@
 
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.OauthCredentials;
+import fi.helsinki.cs.tmc.core.domain.Organization;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
index 29074b9f..37042281 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
@@ -10,6 +10,8 @@ public class Course {
 
     private int id;
     private String name;
+    private String title;
+    private String description;
 
     private List<Exercise> exercises;
 
@@ -81,6 +83,22 @@ public void setName(String name) {
         this.name = name;
     }
 
+    public String getTitle() {
+        return this.title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getDescription() {
+        return this.description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
     public URI getDetailsUrl() {
         return detailsUrl;
     }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Organization.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Organization.java
new file mode 100644
index 00000000..5b988d0c
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Organization.java
@@ -0,0 +1,49 @@
+package fi.helsinki.cs.tmc.core.domain;
+
+import com.google.gson.annotations.SerializedName;
+
+public class Organization {
+
+    @SerializedName("name")
+    private String name;
+
+    @SerializedName("information")
+    private String information;
+
+    @SerializedName("slug")
+    private String slug;
+
+    @SerializedName("logo_path")
+    private String logoPath;
+
+    @SerializedName("pinned")
+    private boolean pinned;
+
+    public Organization(String name, String information, String slug, String logoPath, boolean pinned) {
+        this.name = name;
+        this.information = information;
+        this.slug = slug;
+        this.logoPath = logoPath;
+        this.pinned = pinned;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getInformation() {
+        return information;
+    }
+
+    public String getSlug() {
+        return slug;
+    }
+
+    public String getLogoPath() {
+        return logoPath;
+    }
+
+    public boolean isPinned() {
+        return pinned;
+    }
+}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/utilities/TmcServerAddressNormalizer.java b/src/main/java/fi/helsinki/cs/tmc/core/utilities/TmcServerAddressNormalizer.java
index fc0278fe..99f16d2f 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/utilities/TmcServerAddressNormalizer.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/utilities/TmcServerAddressNormalizer.java
@@ -1,6 +1,7 @@
 package fi.helsinki.cs.tmc.core.utilities;
 
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.domain.Organization;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 
 public class TmcServerAddressNormalizer {
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetOrganizationsTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetOrganizationsTest.java
new file mode 100644
index 00000000..b25fec23
--- /dev/null
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetOrganizationsTest.java
@@ -0,0 +1,49 @@
+package fi.helsinki.cs.tmc.core.commands;
+
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.domain.Organization;
+import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class GetOrganizationsTest {
+    @Mock
+    ProgressObserver mockObserver;
+    @Mock
+    TmcServerCommunicationTaskFactory tmcServerCommunicationTaskFactory;
+
+    TmcSettings settings;
+    private Command<List<Organization>> command;
+
+    @Before
+    public void setUp() throws IOException {
+        MockitoAnnotations.initMocks(this);
+        settings = new MockSettings();
+        TmcSettingsHolder.set(settings);
+        List<Organization> organizations = new ArrayList<Organization>();
+        organizations.add(new Organization("test", "test", "test", "test", false));
+        when(tmcServerCommunicationTaskFactory.getOrganizationListTask()).thenReturn(organizations);
+    }
+
+    @Test
+    public void callsTmcServerCommunicationTaskFactoryGetOrganizationsList() throws Exception {
+        command = new GetOrganizations(mockObserver, tmcServerCommunicationTaskFactory);
+        command.call();
+        verify(tmcServerCommunicationTaskFactory, times(1)).getOrganizationListTask();
+    }
+}
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
index 4969bdf4..c760ed64 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
@@ -3,6 +3,7 @@
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.OauthCredentials;
+import fi.helsinki.cs.tmc.core.domain.Organization;
 
 import com.google.common.base.Optional;
 

From 8be752756be918aa3c09133e60a9567ee9f3c146 Mon Sep 17 00:00:00 2001
From: Antti Leinonen <antti.leinonen@helsinki.fi>
Date: Mon, 15 May 2017 10:53:09 +0300
Subject: [PATCH 013/113] Use Optional.of for oauth tokens

---
 .../fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java | 3 ++-
 .../fi/helsinki/cs/tmc/core/configuration/TmcSettings.java  | 3 +--
 .../helsinki/cs/tmc/core/commands/AuthenticateUserTest.java | 4 +++-
 .../cs/tmc/core/communication/oauth2/OauthTest.java         | 6 ++++--
 .../java/fi/helsinki/cs/tmc/core/utils/MockSettings.java    | 4 ++--
 5 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
index 90d3753c..3c7cffc3 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/oauth2/Oauth.java
@@ -6,6 +6,7 @@
 import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 
+import com.google.common.base.Optional;
 import org.apache.oltu.oauth2.client.OAuthClient;
 import org.apache.oltu.oauth2.client.URLConnectionClient;
 import org.apache.oltu.oauth2.client.request.OAuthClientRequest;
@@ -93,6 +94,6 @@ public void fetchNewToken(String password) throws OAuthSystemException, OAuthPro
         OAuthClient client = new OAuthClient(new URLConnectionClient());
         String token = client.accessToken(request, OAuthJSONAccessTokenResponse.class)
                 .getAccessToken();
-        settings.setToken(token);
+        settings.setToken(Optional.of(token));
     }
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
index 67f35818..e6b22332 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/configuration/TmcSettings.java
@@ -2,7 +2,6 @@
 
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.OauthCredentials;
-import fi.helsinki.cs.tmc.core.domain.Organization;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
@@ -70,7 +69,7 @@ public interface TmcSettings {
 
     void setOauthCredentials(OauthCredentials credentials);
 
-    void setToken(String token);
+    void setToken(Optional<String> token);
 
     Optional<String> getToken();
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
index 1333678a..a16c58f8 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
@@ -15,6 +15,8 @@
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utils.MockSettings;
 
+import com.google.common.base.Optional;
+
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
 import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
 
@@ -48,7 +50,7 @@ public void setUp() throws OAuthProblemException, OAuthSystemException, IOExcept
         doAnswer(new Answer() {
             @Override
             public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
-                settings.setToken("testToken");
+                settings.setToken(Optional.of("testToken"));
                 return null;
             }
         }).when(oauth).fetchNewToken("password");
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
index 8c3ddebd..5fff0a64 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/oauth2/OauthTest.java
@@ -15,6 +15,8 @@
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utils.MockSettings;
 
+import com.google.common.base.Optional;
+
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
 import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
 
@@ -43,7 +45,7 @@ public void setUp() throws Exception {
         doAnswer(new Answer() {
             @Override
             public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
-                settings.setToken("testToken");
+                settings.setToken(Optional.of("testToken"));
                 return null;
             }
         }).when(oauth).fetchNewToken(anyString());
@@ -76,6 +78,6 @@ public void hasNoTokenWhenInitialized() throws Exception {
     @Test
     public void setsTokenToSettings() throws OAuthProblemException, OAuthSystemException {
         oauth.fetchNewToken("password");
-        verify(settings, times(1)).setToken(anyString());
+        verify(settings, times(1)).setToken(Optional.of(anyString()));
     }
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
index c760ed64..2b668cb3 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/utils/MockSettings.java
@@ -130,8 +130,8 @@ public void setOauthCredentials(OauthCredentials credentials) {
     }
 
     @Override
-    public void setToken(String token) {
-        this.token = Optional.of(token);
+    public void setToken(Optional<String> token) {
+        this.token = token;
     }
 
     @Override

From 89777360e3ed4648df3e28bc7596b3c2cf8542ed Mon Sep 17 00:00:00 2001
From: Ville Tanttu <ville.tanttu@cs.helsinki.fi>
Date: Tue, 16 May 2017 13:43:24 +0300
Subject: [PATCH 014/113] Added test method to get next.json URI

---
 .../TmcServerCommunicationTaskFactory.java          | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 0b9d00ce..172729a1 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -132,6 +132,19 @@ private URI getCourseListUrl()
         return addApiCallQueryParameters(URI.create(url));
     }
 
+    /**
+         *  Test for returning skillifier stuff.
+         *
+        * @return next.json URI
+        * @throws OAuthSystemException
+        * @throws OAuthProblemException
+        * @throws NotLoggedInException 
+        */
+    private URI getNextJson() 
+        throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
+        return addApiCallQueryParameters(URI.create("localhost:3200/next.json"));
+    }
+    
     private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
         url = UriUtils.withQueryParam(url, "client", settings.clientName());
         url = UriUtils.withQueryParam(url, "client_version", clientVersion);

From 8e624237033c62f07d478366e8cb27d97584b560 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Tue, 16 May 2017 14:55:04 +0300
Subject: [PATCH 015/113] Connected commands and TaskFactory

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |  6 ++++
 .../GetAdaptiveExerciseAvailability.java      | 31 +++++++++++++++++++
 .../TmcServerCommunicationTaskFactory.java    | 25 +++++++++------
 3 files changed, 52 insertions(+), 10 deletions(-)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/commands/GetAdaptiveExerciseAvailability.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 54fae4df..2007d4aa 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -4,6 +4,7 @@
 import fi.helsinki.cs.tmc.core.commands.DownloadCompletedExercises;
 import fi.helsinki.cs.tmc.core.commands.DownloadModelSolution;
 import fi.helsinki.cs.tmc.core.commands.DownloadOrUpdateExercises;
+import fi.helsinki.cs.tmc.core.commands.GetAdaptiveExerciseAvailability;
 import fi.helsinki.cs.tmc.core.commands.GetCourseDetails;
 import fi.helsinki.cs.tmc.core.commands.GetOrganizations;
 import fi.helsinki.cs.tmc.core.commands.GetUnreadReviews;
@@ -173,6 +174,11 @@ public Callable<Exercise> downloadModelSolution(ProgressObserver observer, Exerc
         logger.info("Creating new DownloadModelSolution command");
         return new ExceptionTrackingCallable<>(new DownloadModelSolution(observer, exercise));
     }
+    
+    public Callable<Boolean> getStatusOfExercises(ProgressObserver observer) {
+        logger.info("Creating new GetStatusOfExercises command");
+        return new ExceptionTrackingCallable<>(new GetAdaptiveExerciseAvailability(observer));
+    }
 
     /**
      * NOT IMPLEMENTED!
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/GetAdaptiveExerciseAvailability.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/GetAdaptiveExerciseAvailability.java
new file mode 100644
index 00000000..801a8321
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/GetAdaptiveExerciseAvailability.java
@@ -0,0 +1,31 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package fi.helsinki.cs.tmc.core.commands;
+
+import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author sakuolin
+ */
+public class GetAdaptiveExerciseAvailability extends Command<Boolean> {
+    
+    private static final Logger logger = LoggerFactory.getLogger(SendFeedback.class);
+
+    public GetAdaptiveExerciseAvailability(ProgressObserver observer) {
+        super(observer);
+    }
+
+    @Override
+    public Boolean call() throws Exception {
+        logger.info("Checking adaptive exercises availability");
+        //informObserver()
+        return tmcServerCommunicationTaskFactory.getNextJson().call();
+    }
+    
+}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 172729a1..0d0034dd 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -131,7 +131,14 @@ private URI getCourseListUrl()
         }
         return addApiCallQueryParameters(URI.create(url));
     }
-
+    
+    private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
+        url = UriUtils.withQueryParam(url, "client", settings.clientName());
+        url = UriUtils.withQueryParam(url, "client_version", clientVersion);
+        url = UriUtils.withQueryParam(url, "access_token", oauth.getToken());
+        return url;
+    }
+    
     /**
          *  Test for returning skillifier stuff.
          *
@@ -140,16 +147,14 @@ private URI getCourseListUrl()
         * @throws OAuthProblemException
         * @throws NotLoggedInException 
         */
-    private URI getNextJson() 
+    public Callable<Boolean> getNextJson() 
         throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
-        return addApiCallQueryParameters(URI.create("localhost:3200/next.json"));
-    }
-    
-    private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
-        url = UriUtils.withQueryParam(url, "client", settings.clientName());
-        url = UriUtils.withQueryParam(url, "client_version", clientVersion);
-        url = UriUtils.withQueryParam(url, "access_token", oauth.getToken());
-        return url;
+        return wrapWithNotLoggedInException(new Callable<Boolean>() {
+            @Override
+            public Boolean call() throws Exception {
+                return false;
+            }
+        });
     }
 
     public Callable<List<Course>> getDownloadingCourseListTask() {

From fdd87e5ab0e62b9f46e881974b5d86e7127d4ebb Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Wed, 17 May 2017 08:27:15 +0300
Subject: [PATCH 016/113] Updating smaller parts for Skillifier connection

---
 .../TmcServerCommunicationTaskFactory.java      |  4 ++++
 .../serialization/AdaptiveExerciseParser.java   | 17 +++++++++++++++++
 2 files changed, 21 insertions(+)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 0d0034dd..a2cad8e8 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -152,6 +152,10 @@ public Callable<Boolean> getNextJson()
         return wrapWithNotLoggedInException(new Callable<Boolean>() {
             @Override
             public Boolean call() throws Exception {
+                // suoraan json?
+                Callable<String> json = new HttpTasks().
+                    getForText(URI.create("localhost:3200/next.json"));
+                // return AdaptiveExerciseParser.parseFromJson();
                 return false;
             }
         });
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
new file mode 100644
index 00000000..4b0889b9
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -0,0 +1,17 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package fi.helsinki.cs.tmc.core.communication.serialization;
+
+/**
+ *
+ * @author sakuolin
+ */
+public class AdaptiveExerciseParser {
+    
+    // TODO: Parse exercise from address
+    // TODO: Parse Boolean from JSON
+    
+}

From 2d7076d424c87923a0d05e651909d69bc77379f6 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Wed, 17 May 2017 09:47:16 +0300
Subject: [PATCH 017/113] Added functionality, added tests

---
 .../TmcServerCommunicationTaskFactory.java    | 21 ++++++++----
 .../serialization/AdaptiveExerciseParser.java | 27 +++++++++++++++
 .../AdaptiveExerciseParserTest.java           | 34 +++++++++++++++++++
 3 files changed, 76 insertions(+), 6 deletions(-)
 create mode 100644 src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index a2cad8e8..48b012ec 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -3,6 +3,7 @@
 import fi.helsinki.cs.tmc.core.communication.http.HttpTasks;
 import fi.helsinki.cs.tmc.core.communication.http.UriUtils;
 import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
+import fi.helsinki.cs.tmc.core.communication.serialization.AdaptiveExerciseParser;
 import fi.helsinki.cs.tmc.core.communication.serialization.ByteArrayGsonSerializer;
 import fi.helsinki.cs.tmc.core.communication.serialization.CourseInfoParser;
 import fi.helsinki.cs.tmc.core.communication.serialization.CourseListParser;
@@ -58,6 +59,7 @@ public class TmcServerCommunicationTaskFactory {
 
     private TmcSettings settings;
     private Oauth oauth;
+    private AdaptiveExerciseParser adaptiveExerciseParser;
     private CourseListParser courseListParser;
     private CourseInfoParser courseInfoParser;
     private ReviewListParser reviewListParser;
@@ -68,18 +70,20 @@ public TmcServerCommunicationTaskFactory() {
     }
 
     public TmcServerCommunicationTaskFactory(TmcSettings settings, Oauth oauth) {
-        this(settings, oauth, new CourseListParser(),
+        this(settings, oauth, new AdaptiveExerciseParser(), new CourseListParser(),
                 new CourseInfoParser(), new ReviewListParser());
     }
 
     public TmcServerCommunicationTaskFactory(
             TmcSettings settings,
             Oauth oauth,
+            AdaptiveExerciseParser adaptiveExerciseParser,
             CourseListParser courseListParser,
             CourseInfoParser courseInfoParser,
             ReviewListParser reviewListParser) {
         this.settings = settings;
         this.oauth = oauth;
+        this.adaptiveExerciseParser = adaptiveExerciseParser;
         this.courseListParser = courseListParser;
         this.courseInfoParser = courseInfoParser;
         this.reviewListParser = reviewListParser;
@@ -152,11 +156,16 @@ public Callable<Boolean> getNextJson()
         return wrapWithNotLoggedInException(new Callable<Boolean>() {
             @Override
             public Boolean call() throws Exception {
-                // suoraan json?
-                Callable<String> json = new HttpTasks().
-                    getForText(URI.create("localhost:3200/next.json"));
-                // return AdaptiveExerciseParser.parseFromJson();
-                return false;
+                try {
+                    Callable<String> download = new HttpTasks().
+                        getForText(URI.create("localhost:3200/next.json"));
+                    String json = download.call();
+                    return adaptiveExerciseParser.parseFromJson(json);
+                }
+                catch (Exception ex) {
+                    return false;
+                    // do things
+                }
             }
         });
     }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 4b0889b9..b007500e 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -5,6 +5,14 @@
  */
 package fi.helsinki.cs.tmc.core.communication.serialization;
 
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import fi.helsinki.cs.tmc.core.domain.Course;
+import fi.helsinki.cs.tmc.core.domain.Exercise;
+import java.util.Date;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  *
  * @author sakuolin
@@ -14,4 +22,23 @@ public class AdaptiveExerciseParser {
     // TODO: Parse exercise from address
     // TODO: Parse Boolean from JSON
     
+    private static final Logger logger = LoggerFactory.getLogger(AdaptiveExerciseParser.class);
+
+    // miksi static?
+    public Boolean parseFromJson(String json) {
+        if (json == null) {
+            throw new NullPointerException("Json string is null");
+        }
+        if (json.trim().isEmpty()) {
+            throw new IllegalArgumentException("Empty input");
+        }
+        try {
+            System.out.println(json);
+            return true;
+        } catch (RuntimeException ex) {
+            logger.warn("Failed to parse adaptive course availability", ex);
+            throw new RuntimeException("Failed to parse adaptive course availability: " + ex.getMessage(), ex);
+        }    
+    }
+    
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
new file mode 100644
index 00000000..98b37835
--- /dev/null
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -0,0 +1,34 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package fi.helsinki.cs.tmc.core.communication.http.serialization;
+
+import fi.helsinki.cs.tmc.core.communication.serialization.AdaptiveExerciseParser;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author sakuolin
+ */
+public class AdaptiveExerciseParserTest {
+    
+    private AdaptiveExerciseParser aep;
+    
+    @Before
+    public void setUp() {
+        this.aep = new AdaptiveExerciseParser();
+    }
+    
+    @Test
+    public void testAvailability() {
+        assertFalse(aep.parseFromJson("ögodfogdfog"));
+    }
+    
+}

From 46c5411cfce265097788f0634dd74f4066a3b264 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Wed, 17 May 2017 10:08:36 +0300
Subject: [PATCH 018/113] Always return a Boolean from AdaptiveExerciseParser

---
 .../TmcServerCommunicationTaskFactory.java          |  2 +-
 .../serialization/AdaptiveExerciseParser.java       | 13 ++++++++++---
 .../serialization/AdaptiveExerciseParserTest.java   |  6 ++----
 3 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 48b012ec..8f07fe3e 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -160,7 +160,7 @@ public Boolean call() throws Exception {
                     Callable<String> download = new HttpTasks().
                         getForText(URI.create("localhost:3200/next.json"));
                     String json = download.call();
-                    return adaptiveExerciseParser.parseFromJson(json);
+                    return adaptiveExerciseParser.parseBooleanFromJson(json);
                 }
                 catch (Exception ex) {
                     return false;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index b007500e..0dbd27f9 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -10,6 +10,7 @@
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import java.util.Date;
+import org.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -24,8 +25,7 @@ public class AdaptiveExerciseParser {
     
     private static final Logger logger = LoggerFactory.getLogger(AdaptiveExerciseParser.class);
 
-    // miksi static?
-    public Boolean parseFromJson(String json) {
+    private Boolean parseFromJson(String json) {
         if (json == null) {
             throw new NullPointerException("Json string is null");
         }
@@ -34,11 +34,18 @@ public Boolean parseFromJson(String json) {
         }
         try {
             System.out.println(json);
-            return true;
+            JSONObject obj = new JSONObject(json);
+            return obj.getBoolean("available");
         } catch (RuntimeException ex) {
             logger.warn("Failed to parse adaptive course availability", ex);
             throw new RuntimeException("Failed to parse adaptive course availability: " + ex.getMessage(), ex);
         }    
     }
     
+    public Boolean parseBooleanFromJson(String json) {
+        Boolean availability = parseFromJson(json);
+        if (availability) return true;
+        else return false;
+    }
+    
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 98b37835..7f7c1233 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -6,10 +6,8 @@
 package fi.helsinki.cs.tmc.core.communication.http.serialization;
 
 import fi.helsinki.cs.tmc.core.communication.serialization.AdaptiveExerciseParser;
-import org.junit.After;
-import org.junit.AfterClass;
+
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Test;
 import static org.junit.Assert.*;
 
@@ -28,7 +26,7 @@ public void setUp() {
     
     @Test
     public void testAvailability() {
-        assertFalse(aep.parseFromJson("ögodfogdfog"));
+        assertTrue(aep.parseBooleanFromJson("dgnsfogjdpfog"));
     }
     
 }

From 2178d63592fc5766f8e8f00eebd2b3703bc9e898 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Wed, 17 May 2017 10:19:26 +0300
Subject: [PATCH 019/113] Parser working for JSON Objects

---
 .../communication/serialization/AdaptiveExerciseParser.java     | 1 -
 .../http/serialization/AdaptiveExerciseParserTest.java          | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 0dbd27f9..492026ec 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -33,7 +33,6 @@ private Boolean parseFromJson(String json) {
             throw new IllegalArgumentException("Empty input");
         }
         try {
-            System.out.println(json);
             JSONObject obj = new JSONObject(json);
             return obj.getBoolean("available");
         } catch (RuntimeException ex) {
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 7f7c1233..44fdd31d 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -26,7 +26,7 @@ public void setUp() {
     
     @Test
     public void testAvailability() {
-        assertTrue(aep.parseBooleanFromJson("dgnsfogjdpfog"));
+        assertTrue(aep.parseBooleanFromJson("{ available: true }"));
     }
     
 }

From ffbfb4a47167dc93cf984dfc0800f861b191e372 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Wed, 17 May 2017 10:28:03 +0300
Subject: [PATCH 020/113] Reverted changes; Makes for a better design

---
 .../communication/TmcServerCommunicationTaskFactory.java  | 2 +-
 .../serialization/AdaptiveExerciseParser.java             | 8 +-------
 .../http/serialization/AdaptiveExerciseParserTest.java    | 2 +-
 3 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 8f07fe3e..48b012ec 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -160,7 +160,7 @@ public Boolean call() throws Exception {
                     Callable<String> download = new HttpTasks().
                         getForText(URI.create("localhost:3200/next.json"));
                     String json = download.call();
-                    return adaptiveExerciseParser.parseBooleanFromJson(json);
+                    return adaptiveExerciseParser.parseFromJson(json);
                 }
                 catch (Exception ex) {
                     return false;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 492026ec..3c59a86e 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -25,7 +25,7 @@ public class AdaptiveExerciseParser {
     
     private static final Logger logger = LoggerFactory.getLogger(AdaptiveExerciseParser.class);
 
-    private Boolean parseFromJson(String json) {
+    public Boolean parseFromJson(String json) {
         if (json == null) {
             throw new NullPointerException("Json string is null");
         }
@@ -41,10 +41,4 @@ private Boolean parseFromJson(String json) {
         }    
     }
     
-    public Boolean parseBooleanFromJson(String json) {
-        Boolean availability = parseFromJson(json);
-        if (availability) return true;
-        else return false;
-    }
-    
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 44fdd31d..d5adf8f7 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -26,7 +26,7 @@ public void setUp() {
     
     @Test
     public void testAvailability() {
-        assertTrue(aep.parseBooleanFromJson("{ available: true }"));
+        assertTrue(aep.parseFromJson("{ available: true }"));
     }
     
 }

From fad710e9497818c22a31dfe8e47643ba588ffe6f Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Wed, 17 May 2017 11:00:42 +0300
Subject: [PATCH 021/113] testi parserille

---
 .../AdaptiveExerciseParserTest.java             | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 44fdd31d..aeb85c24 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -9,24 +9,29 @@
 
 import org.junit.Before;
 import org.junit.Test;
+
 import static org.junit.Assert.*;
 
 /**
- *
  * @author sakuolin
  */
 public class AdaptiveExerciseParserTest {
-    
+
     private AdaptiveExerciseParser aep;
-    
+
     @Before
     public void setUp() {
         this.aep = new AdaptiveExerciseParser();
     }
-    
+
     @Test
-    public void testAvailability() {
+    public void testAvailabilityTrue() {
         assertTrue(aep.parseBooleanFromJson("{ available: true }"));
     }
-    
+
+    @Test
+    public void testAvailabilityFalse() {
+        assertFalse(aep.parseBooleanFromJson("{ available: false }"));
+    }
+
 }

From d63fc1f76bfe078841a5bd38200eb94acb3d425e Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Wed, 17 May 2017 11:47:48 +0300
Subject: [PATCH 022/113] Broken things

---
 src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java     |  8 ++++----
 ...Availability.java => DownloadAdaptiveExercise.java} | 10 ++++++----
 .../TmcServerCommunicationTaskFactory.java             |  9 ++++-----
 .../serialization/AdaptiveExerciseParser.java          |  9 ++++++---
 .../fi/helsinki/cs/tmc/spyware/EventSendBuffer.java    |  1 +
 .../cs/tmc/core/commands/AuthenticateUserTest.java     |  3 +++
 .../core/commands/DownloadOrUpdateExercisesTest.java   |  5 +++++
 .../cs/tmc/core/commands/GetCourseDetailsTest.java     |  1 +
 .../cs/tmc/core/commands/GetOrganizationsTest.java     |  1 +
 .../tmc/core/commands/GetUpdatableExercisesTest.java   |  4 ++++
 .../helsinki/cs/tmc/core/commands/ListCoursesTest.java |  1 +
 .../cs/tmc/core/commands/PasteWithCommentTest.java     |  2 ++
 .../cs/tmc/core/commands/SendFeedbackTest.java         |  3 +++
 .../fi/helsinki/cs/tmc/core/commands/SubmitTest.java   |  2 ++
 .../cs/tmc/core/spyware/EventSendBufferTest.java       |  6 ++++++
 15 files changed, 49 insertions(+), 16 deletions(-)
 rename src/main/java/fi/helsinki/cs/tmc/core/commands/{GetAdaptiveExerciseAvailability.java => DownloadAdaptiveExercise.java} (66%)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 2007d4aa..91b33bbf 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -4,7 +4,7 @@
 import fi.helsinki.cs.tmc.core.commands.DownloadCompletedExercises;
 import fi.helsinki.cs.tmc.core.commands.DownloadModelSolution;
 import fi.helsinki.cs.tmc.core.commands.DownloadOrUpdateExercises;
-import fi.helsinki.cs.tmc.core.commands.GetAdaptiveExerciseAvailability;
+import fi.helsinki.cs.tmc.core.commands.DownloadAdaptiveExercise;
 import fi.helsinki.cs.tmc.core.commands.GetCourseDetails;
 import fi.helsinki.cs.tmc.core.commands.GetOrganizations;
 import fi.helsinki.cs.tmc.core.commands.GetUnreadReviews;
@@ -175,9 +175,9 @@ public Callable<Exercise> downloadModelSolution(ProgressObserver observer, Exerc
         return new ExceptionTrackingCallable<>(new DownloadModelSolution(observer, exercise));
     }
     
-    public Callable<Boolean> getStatusOfExercises(ProgressObserver observer) {
-        logger.info("Creating new GetStatusOfExercises command");
-        return new ExceptionTrackingCallable<>(new GetAdaptiveExerciseAvailability(observer));
+    public Callable<Exercise> downloadAdaptiveExercise(ProgressObserver observer) {
+        logger.info("Creating new DownloadAdaptiveExercise command");
+        return new ExceptionTrackingCallable<>(new DownloadAdaptiveExercise(observer));
     }
 
     /**
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/GetAdaptiveExerciseAvailability.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
similarity index 66%
rename from src/main/java/fi/helsinki/cs/tmc/core/commands/GetAdaptiveExerciseAvailability.java
rename to src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 801a8321..2055d9f9 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/GetAdaptiveExerciseAvailability.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -5,7 +5,9 @@
  */
 package fi.helsinki.cs.tmc.core.commands;
 
+import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -13,19 +15,19 @@
  *
  * @author sakuolin
  */
-public class GetAdaptiveExerciseAvailability extends Command<Boolean> {
+public class DownloadAdaptiveExercise extends Command<Exercise> {
     
     private static final Logger logger = LoggerFactory.getLogger(SendFeedback.class);
 
-    public GetAdaptiveExerciseAvailability(ProgressObserver observer) {
+    public DownloadAdaptiveExercise(ProgressObserver observer) {
         super(observer);
     }
 
     @Override
-    public Boolean call() throws Exception {
+    public Exercise call() throws Exception {
         logger.info("Checking adaptive exercises availability");
         //informObserver()
-        return tmcServerCommunicationTaskFactory.getNextJson().call();
+        return tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
     }
     
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 48b012ec..071b9408 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -151,11 +151,11 @@ private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
         * @throws OAuthProblemException
         * @throws NotLoggedInException 
         */
-    public Callable<Boolean> getNextJson() 
+    public Callable<Exercise> getAdaptiveExercise() 
         throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
-        return wrapWithNotLoggedInException(new Callable<Boolean>() {
+        return wrapWithNotLoggedInException(new Callable<Exercise>() {
             @Override
-            public Boolean call() throws Exception {
+            public Exercise call() throws Exception {
                 try {
                     Callable<String> download = new HttpTasks().
                         getForText(URI.create("localhost:3200/next.json"));
@@ -163,8 +163,7 @@ public Boolean call() throws Exception {
                     return adaptiveExerciseParser.parseFromJson(json);
                 }
                 catch (Exception ex) {
-                    return false;
-                    // do things
+                    return null;
                 }
             }
         });
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 3c59a86e..58f17b46 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -21,11 +21,10 @@
 public class AdaptiveExerciseParser {
     
     // TODO: Parse exercise from address
-    // TODO: Parse Boolean from JSON
     
     private static final Logger logger = LoggerFactory.getLogger(AdaptiveExerciseParser.class);
 
-    public Boolean parseFromJson(String json) {
+    public Exercise parseFromJson(String json) {
         if (json == null) {
             throw new NullPointerException("Json string is null");
         }
@@ -34,7 +33,11 @@ public Boolean parseFromJson(String json) {
         }
         try {
             JSONObject obj = new JSONObject(json);
-            return obj.getBoolean("available");
+            // Check status
+            if (obj.getBoolean("available")) {
+                // Gson
+                
+            }
         } catch (RuntimeException ex) {
             logger.warn("Failed to parse adaptive course availability", ex);
             throw new RuntimeException("Failed to parse adaptive course availability: " + ex.getMessage(), ex);
diff --git a/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java b/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java
index 678734d7..af54ca2b 100644
--- a/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java
+++ b/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java
@@ -25,6 +25,7 @@
 import java.util.concurrent.TimeoutException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import static com.google.common.base.Preconditions.checkArgument;
 
 /**
  * Buffers {@link LoggableEvent}s and sends them to the server and/or syncs them to the disk
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
index a16c58f8..c1e9f979 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
@@ -29,6 +29,9 @@
 import org.mockito.stubbing.Answer;
 
 import java.io.IOException;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.verify;
 
 public class AuthenticateUserTest {
     @Mock
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercisesTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercisesTest.java
index cbe6c043..26069fb7 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercisesTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercisesTest.java
@@ -38,6 +38,11 @@
 import java.nio.file.Path;
 import java.util.List;
 import java.util.concurrent.Callable;
+import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.verify;
 
 public class DownloadOrUpdateExercisesTest {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetailsTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetailsTest.java
index af5b4230..56c73389 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetailsTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetailsTest.java
@@ -19,6 +19,7 @@
 import org.mockito.Spy;
 
 import java.util.concurrent.Callable;
+import static com.google.common.truth.Truth.assertThat;
 
 public class GetCourseDetailsTest {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetOrganizationsTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetOrganizationsTest.java
index b25fec23..43034183 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetOrganizationsTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetOrganizationsTest.java
@@ -20,6 +20,7 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import static org.mockito.Mockito.verify;
 
 public class GetOrganizationsTest {
     @Mock
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetUpdatableExercisesTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetUpdatableExercisesTest.java
index b9858c73..5b45a0c1 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetUpdatableExercisesTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetUpdatableExercisesTest.java
@@ -32,6 +32,10 @@
 
 import java.nio.file.Path;
 import java.util.concurrent.Callable;
+import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.mockito.Matchers.any;
 
 public class GetUpdatableExercisesTest {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/ListCoursesTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/ListCoursesTest.java
index 392f29a9..29f2f362 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/ListCoursesTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/ListCoursesTest.java
@@ -22,6 +22,7 @@
 
 import java.util.List;
 import java.util.concurrent.Callable;
+import static com.google.common.truth.Truth.assertThat;
 
 public class ListCoursesTest {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/PasteWithCommentTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/PasteWithCommentTest.java
index 1c863044..6782d4a5 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/PasteWithCommentTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/PasteWithCommentTest.java
@@ -33,6 +33,8 @@
 import java.util.Locale;
 import java.util.Map;
 import java.util.concurrent.Callable;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
 
 public class PasteWithCommentTest {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SendFeedbackTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SendFeedbackTest.java
index 46874ed8..f2d7cdab 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SendFeedbackTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SendFeedbackTest.java
@@ -30,6 +30,9 @@
 import java.net.URI;
 import java.util.List;
 import java.util.concurrent.Callable;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
 
 public class SendFeedbackTest {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitTest.java
index 9042ab77..aadf2720 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitTest.java
@@ -35,6 +35,8 @@
 import java.util.Locale;
 import java.util.Map;
 import java.util.concurrent.Callable;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
 
 public class SubmitTest {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java b/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java
index 5263551e..0099b958 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java
@@ -43,6 +43,12 @@
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicInteger;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.verify;
 
 public class EventSendBufferTest {
 

From 7375056a4c37b84aa264faccfecc4d61106457c0 Mon Sep 17 00:00:00 2001
From: Qianyue Jin <jinzilailai@gmail.com>
Date: Wed, 17 May 2017 11:57:13 +0300
Subject: [PATCH 023/113] download exercise by zip string

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |  8 +++-
 .../commands/DownloadExerciseByZipString.java | 39 +++++++++++++++++++
 2 files changed, 46 insertions(+), 1 deletion(-)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadExerciseByZipString.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 2007d4aa..9379fd56 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -2,6 +2,7 @@
 
 import fi.helsinki.cs.tmc.core.commands.AuthenticateUser;
 import fi.helsinki.cs.tmc.core.commands.DownloadCompletedExercises;
+import fi.helsinki.cs.tmc.core.commands.DownloadExerciseByZipString;
 import fi.helsinki.cs.tmc.core.commands.DownloadModelSolution;
 import fi.helsinki.cs.tmc.core.commands.DownloadOrUpdateExercises;
 import fi.helsinki.cs.tmc.core.commands.GetAdaptiveExerciseAvailability;
@@ -39,6 +40,7 @@
 import fi.helsinki.cs.tmc.spyware.LoggableEvent;
 
 import com.google.common.annotations.Beta;
+import fi.helsinki.cs.tmc.core.commands.Command;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -179,7 +181,11 @@ public Callable<Boolean> getStatusOfExercises(ProgressObserver observer) {
         logger.info("Creating new GetStatusOfExercises command");
         return new ExceptionTrackingCallable<>(new GetAdaptiveExerciseAvailability(observer));
     }
-
+    
+    public Callable<Exercise> downloadExerciseByZipString(ProgressObserver observer, String zip) {
+        return new ExceptionTrackingCallable<>(new DownloadExerciseByZipString(observer,zip));
+    }
+    
     /**
      * NOT IMPLEMENTED!
      *
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadExerciseByZipString.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadExerciseByZipString.java
new file mode 100644
index 00000000..a1a6757d
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadExerciseByZipString.java
@@ -0,0 +1,39 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package fi.helsinki.cs.tmc.core.commands;
+
+import fi.helsinki.cs.tmc.core.communication.http.HttpTasks;
+import fi.helsinki.cs.tmc.core.domain.Exercise;
+import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import java.net.URI;
+import java.util.concurrent.Callable;
+
+/**
+ *
+ * @author lai
+ */
+public class DownloadExerciseByZipString extends Command<Exercise>{
+    private String zip;
+    public DownloadExerciseByZipString(ProgressObserver observer,String zip) {
+        super(observer);
+        this.zip=zip;
+    }
+    
+    private String ToUrlByZipAndServerPath(String zip, String serverPath) {
+        return serverPath + zip;
+    }
+    
+    private Exercise ExtractExerciseByBytes(byte[] input){
+        return null; //ExerciseDownloadingCommand.java
+    }
+    
+    @Override
+    public Exercise call() throws Exception {
+        Callable<byte[]> download = new HttpTasks().getForBinary(URI.create(ToUrlByZipAndServerPath(zip, ""))); //mooc.helsin
+        return ExtractExerciseByBytes(download.call());
+    }
+    
+}

From 098ec6547a632a612eaad90948162df6a99242cd Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Wed, 17 May 2017 13:00:51 +0300
Subject: [PATCH 024/113] Gson is supposed to work, you fools

---
 .../communication/serialization/AdaptiveExerciseParser.java  | 5 ++++-
 .../http/serialization/AdaptiveExerciseParserTest.java       | 4 ++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 58f17b46..7f21ebca 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -36,8 +36,11 @@ public Exercise parseFromJson(String json) {
             // Check status
             if (obj.getBoolean("available")) {
                 // Gson
-                
+                Gson gson = new GsonBuilder().create();
+                Exercise exercise = gson.fromJson(json, Exercise.class);
+                return exercise;
             }
+            return null;
         } catch (RuntimeException ex) {
             logger.warn("Failed to parse adaptive course availability", ex);
             throw new RuntimeException("Failed to parse adaptive course availability: " + ex.getMessage(), ex);
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index d5adf8f7..580a25a2 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -25,8 +25,8 @@ public void setUp() {
     }
     
     @Test
-    public void testAvailability() {
-        assertTrue(aep.parseFromJson("{ available: true }"));
+    public void parseFromJson() {
+        assertEquals(aep.parseFromJson("ögjdojgdpog"), null);
     }
     
 }

From 7daa16e5b17a1b0db7ce99e0eef4a5026b7a1adf Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Wed, 17 May 2017 13:06:28 +0300
Subject: [PATCH 025/113] pls work

---
 .../serialization/AdaptiveExerciseParserTest.java    | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 56617bd3..91e5d12e 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -24,21 +24,9 @@ public void setUp() {
         this.aep = new AdaptiveExerciseParser();
     }
 
-    /*
     @Test
-    public void testAvailabilityTrue() {
-        assertTrue(aep.parseBooleanFromJson("{ available: true }"));
-    }
-
-    @Test
-<<<<<<< HEAD
     public void parseFromJson() {
         assertEquals(aep.parseFromJson("ögjdojgdpog"), null);
-=======
-    public void testAvailabilityFalse() {
-        assertFalse(aep.parseBooleanFromJson("{ available: false }"));
->>>>>>> eb18c730b91dfd34bccac7ffbe143605c26de7fb
     }
-    */
 
 }

From 556d567ea04ae3ef54f97d486562960b4a3453c9 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Wed, 17 May 2017 13:17:37 +0300
Subject: [PATCH 026/113] Zip needed for Gson construction

---
 .../serialization/AdaptiveExerciseParser.java             | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 7f21ebca..5a4a098b 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -35,10 +35,14 @@ public Exercise parseFromJson(String json) {
             JSONObject obj = new JSONObject(json);
             // Check status
             if (obj.getBoolean("available")) {
+                // Zip exercise
+                // ...
+                byte[] zip;
                 // Gson
                 Gson gson = new GsonBuilder().create();
-                Exercise exercise = gson.fromJson(json, Exercise.class);
-                return exercise;
+                //Exercise exercise = gson.fromJson(zip, Exercise.class);
+                //return exercise;
+                return null;
             }
             return null;
         } catch (RuntimeException ex) {

From 5b0a2a6b851a6599b6c901ac584a5bb785fce4b7 Mon Sep 17 00:00:00 2001
From: fogre <antti.kotiranta@helsinki.fi>
Date: Wed, 17 May 2017 15:14:32 +0300
Subject: [PATCH 027/113] test

---
 .../TmcServerCommunicationTaskFactory.java    |  3 +-
 .../serialization/AdaptiveExerciseParser.java | 28 +++++++++++++------
 2 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 071b9408..a9eb6369 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -160,7 +160,8 @@ public Exercise call() throws Exception {
                     Callable<String> download = new HttpTasks().
                         getForText(URI.create("localhost:3200/next.json"));
                     String json = download.call();
-                    return adaptiveExerciseParser.parseFromJson(json);
+                    Exercise ex = adaptiveExerciseParser.parseFromJson(json);
+                    Callable<byte[]> b = getDownloadingExerciseZipTask(ex);
                 }
                 catch (Exception ex) {
                     return null;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 5a4a098b..4c984e6d 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -7,8 +7,11 @@
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonParser;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
+import java.net.URI;
 import java.util.Date;
 import org.json.JSONObject;
 import org.slf4j.Logger;
@@ -31,18 +34,27 @@ public Exercise parseFromJson(String json) {
         if (json.trim().isEmpty()) {
             throw new IllegalArgumentException("Empty input");
         }
-        try {
-            JSONObject obj = new JSONObject(json);
+        try {;
+            Gson gson = new Gson();
+            JsonParser parser = new JsonParser();
+            JsonArray array = parser.parse(json).getAsJsonArray();
+            Boolean availability = gson.fromJson(array.get(0), Boolean.class);
+            //JSONObject obj = new JSONObject(json);
             // Check status
-            if (obj.getBoolean("available")) {
-                // Zip exercise
+            if (availability) {
+                String zip_url = gson.fromJson(array.get(1), String.class);
+                Exercise ex = new Exercise();
+                ex.setDownloadUrl(URI.create(zip_url));
+                return ex;
+                
                 // ...
-                byte[] zip;
+                
+                //byte[] zip;
                 // Gson
-                Gson gson = new GsonBuilder().create();
-                //Exercise exercise = gson.fromJson(zip, Exercise.class);
+                //gson = new GsonBuilder().create();
+                //ercise exercise = gson.fromJson(array.get(1), Exercise.class);
                 //return exercise;
-                return null;
+                //return zip_url;
             }
             return null;
         } catch (RuntimeException ex) {

From c66e64897ab906e4f3816329cf57882326c11101 Mon Sep 17 00:00:00 2001
From: Qianyue Jin <jinzilailai@gmail.com>
Date: Wed, 17 May 2017 15:55:09 +0300
Subject: [PATCH 028/113] download and extract, return void, build fail

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |  2 +-
 .../commands/DownloadAdaptiveExercise.java    |  7 +++---
 .../TmcServerCommunicationTaskFactory.java    | 22 ++++++++++++++-----
 3 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 35adada7..b458d1a6 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -177,7 +177,7 @@ public Callable<Exercise> downloadModelSolution(ProgressObserver observer, Exerc
         return new ExceptionTrackingCallable<>(new DownloadModelSolution(observer, exercise));
     }
     
-    public Callable<Exercise> downloadAdaptiveExercise(ProgressObserver observer) {
+    public Callable<Void> downloadAdaptiveExercise(ProgressObserver observer) {
         logger.info("Creating new DownloadAdaptiveExercise command");
         return new ExceptionTrackingCallable<>(new DownloadAdaptiveExercise(observer));
     }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 2055d9f9..f82aabcd 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -15,7 +15,7 @@
  *
  * @author sakuolin
  */
-public class DownloadAdaptiveExercise extends Command<Exercise> {
+public class DownloadAdaptiveExercise extends Command<Void> {
     
     private static final Logger logger = LoggerFactory.getLogger(SendFeedback.class);
 
@@ -24,10 +24,11 @@ public DownloadAdaptiveExercise(ProgressObserver observer) {
     }
 
     @Override
-    public Exercise call() throws Exception {
+    public Void call() throws Exception {
         logger.info("Checking adaptive exercises availability");
         //informObserver()
-        return tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
+        tmcServerCommunicationTaskFactory.downloadAndExtractAdaptiveExercise().call();
+        return null;
     }
     
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index a9eb6369..f64049d4 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -1,5 +1,7 @@
 package fi.helsinki.cs.tmc.core.communication;
 
+import fi.helsinki.cs.tmc.core.commands.*;
+
 import fi.helsinki.cs.tmc.core.communication.http.HttpTasks;
 import fi.helsinki.cs.tmc.core.communication.http.UriUtils;
 import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
@@ -28,6 +30,7 @@
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.google.gson.reflect.TypeToken;
+import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
@@ -38,6 +41,9 @@
 import java.io.OutputStreamWriter;
 import java.net.URI;
 import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -151,24 +157,30 @@ private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
         * @throws OAuthProblemException
         * @throws NotLoggedInException 
         */
-    public Callable<Exercise> getAdaptiveExercise() 
+    public Callable<Void> downloadAndExtractAdaptiveExercise() 
         throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
-        return wrapWithNotLoggedInException(new Callable<Exercise>() {
+        return wrapWithNotLoggedInException(new Callable<Void>() {
             @Override
-            public Exercise call() throws Exception {
+            public Void call() throws Exception {
                 try {
                     Callable<String> download = new HttpTasks().
                         getForText(URI.create("localhost:3200/next.json"));
                     String json = download.call();
                     Exercise ex = adaptiveExerciseParser.parseFromJson(json);
-                    Callable<byte[]> b = getDownloadingExerciseZipTask(ex);
+                    byte[] b = getDownloadingExerciseZipTask(ex).call();
+                    Path temp = Files.createTempFile("tmc-exercise-", ".zip"); 
+                    Files.write(temp, b);
+                    Path target = TmcSettingsHolder.get().getTmcProjectDirectory().resolve("target-example");
+                    TmcLangsHolder.get().extractAndRewriteEveryhing(temp, target);
+                    
                 }
                 catch (Exception ex) {
-                    return null;
                 }
+                return null;
             }
         });
     }
+    
 
     public Callable<List<Course>> getDownloadingCourseListTask() {
         return wrapWithNotLoggedInException(new Callable<List<Course>>() {

From bcd2a4698d8e1a1d92afa5070267e202866b97a2 Mon Sep 17 00:00:00 2001
From: fogre <antti.kotiranta@helsinki.fi>
Date: Wed, 17 May 2017 16:36:41 +0300
Subject: [PATCH 029/113] Adapt command changes... again.

---
 .../commands/DownloadAdaptiveExercise.java    | 20 ++++++++++++++++---
 .../TmcServerCommunicationTaskFactory.java    | 20 +++++++++++++++++++
 .../AdaptiveExerciseParserTest.java           |  4 ++--
 3 files changed, 39 insertions(+), 5 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 2055d9f9..de0e9559 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -5,8 +5,11 @@
  */
 package fi.helsinki.cs.tmc.core.commands;
 
+import fi.helsinki.cs.tmc.core.communication.serialization.AdaptiveExerciseParser;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
+import fi.helsinki.cs.tmc.core.domain.Progress;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import java.util.concurrent.Callable;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -15,7 +18,7 @@
  *
  * @author sakuolin
  */
-public class DownloadAdaptiveExercise extends Command<Exercise> {
+public class DownloadAdaptiveExercise extends ExerciseDownloadingCommand<Object> {
     
     private static final Logger logger = LoggerFactory.getLogger(SendFeedback.class);
 
@@ -25,9 +28,20 @@ public DownloadAdaptiveExercise(ProgressObserver observer) {
 
     @Override
     public Exercise call() throws Exception {
+        Progress progress = new Progress(3);
         logger.info("Checking adaptive exercises availability");
-        //informObserver()
-        return tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
+        //informObserver
+        String json = tmcServerCommunicationTaskFactory.getJsonString().call();
+        AdaptiveExerciseParser aparser = new AdaptiveExerciseParser();
+        Exercise ex = aparser.parseFromJson(json);
+        //ex.setName = "jotain"
+        //ex.setCourseName = "Jotain
+        //Tallennuspolku riippuu edellämainituista nimistä (TMCroot)
+        byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(ex).call();
+        //checkInterrupt();
+        extractProject(zipb, ex, progress);
+        return ex;
+       // byte[] zip =  tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
     }
     
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index a9eb6369..4a807afb 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -151,6 +151,25 @@ private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
         * @throws OAuthProblemException
         * @throws NotLoggedInException 
         */
+    
+    public Callable<String> getJsonString(){
+        return wrapWithNotLoggedInException(new Callable<String>(){
+            @Override
+            public String call() throws Exception {
+                try{
+                    Callable<String> download = new HttpTasks().
+                        getForText(URI.create("localhost:3200/next.json"));
+                    String json = download.call();
+                    return json;
+                   }
+                catch (Exception ex) {
+                    return null;
+                }
+            }
+    });
+        
+        
+    }
     public Callable<Exercise> getAdaptiveExercise() 
         throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
         return wrapWithNotLoggedInException(new Callable<Exercise>() {
@@ -162,6 +181,7 @@ public Exercise call() throws Exception {
                     String json = download.call();
                     Exercise ex = adaptiveExerciseParser.parseFromJson(json);
                     Callable<byte[]> b = getDownloadingExerciseZipTask(ex);
+                    return ex;
                 }
                 catch (Exception ex) {
                     return null;
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 91e5d12e..4583f17d 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -18,7 +18,7 @@
 public class AdaptiveExerciseParserTest {
 
     private AdaptiveExerciseParser aep;
-
+/*
     @Before
     public void setUp() {
         this.aep = new AdaptiveExerciseParser();
@@ -28,5 +28,5 @@ public void setUp() {
     public void parseFromJson() {
         assertEquals(aep.parseFromJson("ögjdojgdpog"), null);
     }
-
+ */
 }

From 454b87afaad6035c783d8a6d253b101c54f16ffd Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Thu, 18 May 2017 08:49:14 +0300
Subject: [PATCH 030/113] Fix for core command, Json return

---
 src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java          | 2 +-
 .../cs/tmc/core/commands/DownloadAdaptiveExercise.java      | 2 +-
 .../communication/TmcServerCommunicationTaskFactory.java    | 6 +++---
 .../communication/serialization/AdaptiveExerciseParser.java | 4 ++--
 4 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 35adada7..249dba43 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -177,7 +177,7 @@ public Callable<Exercise> downloadModelSolution(ProgressObserver observer, Exerc
         return new ExceptionTrackingCallable<>(new DownloadModelSolution(observer, exercise));
     }
     
-    public Callable<Exercise> downloadAdaptiveExercise(ProgressObserver observer) {
+    public ExceptionTrackingCallable<Exercise> downloadAdaptiveExercise(ProgressObserver observer) {
         logger.info("Creating new DownloadAdaptiveExercise command");
         return new ExceptionTrackingCallable<>(new DownloadAdaptiveExercise(observer));
     }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index de0e9559..0193c59f 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -18,7 +18,7 @@
  *
  * @author sakuolin
  */
-public class DownloadAdaptiveExercise extends ExerciseDownloadingCommand<Object> {
+public class DownloadAdaptiveExercise extends ExerciseDownloadingCommand<Exercise> {
     
     private static final Logger logger = LoggerFactory.getLogger(SendFeedback.class);
 
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 4a807afb..60a11fbd 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -156,14 +156,14 @@ public Callable<String> getJsonString(){
         return wrapWithNotLoggedInException(new Callable<String>(){
             @Override
             public String call() throws Exception {
-                try{
+                try {
                     Callable<String> download = new HttpTasks().
                         getForText(URI.create("localhost:3200/next.json"));
                     String json = download.call();
                     return json;
-                   }
+                    }
                 catch (Exception ex) {
-                    return null;
+                    return "{}";
                 }
             }
     });
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 4c984e6d..6f01b710 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -58,8 +58,8 @@ public Exercise parseFromJson(String json) {
             }
             return null;
         } catch (RuntimeException ex) {
-            logger.warn("Failed to parse adaptive course availability", ex);
-            throw new RuntimeException("Failed to parse adaptive course availability: " + ex.getMessage(), ex);
+            logger.warn("Failed to parse an adaptive course from URL", ex);
+            throw new RuntimeException("Failed to parse an adaptive course from URL: " + ex.getMessage(), ex);
         }    
     }
     

From 43ebad86366cc46ee7a35fa4360d9ee60cad50d8 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Thu, 18 May 2017 09:08:40 +0300
Subject: [PATCH 031/113] Git, what are you doing?

---
 src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 249dba43..35adada7 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -177,7 +177,7 @@ public Callable<Exercise> downloadModelSolution(ProgressObserver observer, Exerc
         return new ExceptionTrackingCallable<>(new DownloadModelSolution(observer, exercise));
     }
     
-    public ExceptionTrackingCallable<Exercise> downloadAdaptiveExercise(ProgressObserver observer) {
+    public Callable<Exercise> downloadAdaptiveExercise(ProgressObserver observer) {
         logger.info("Creating new DownloadAdaptiveExercise command");
         return new ExceptionTrackingCallable<>(new DownloadAdaptiveExercise(observer));
     }

From 0e35a55574bfb85529ffd0403407b9e7c61fa641 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Thu, 18 May 2017 09:53:50 +0300
Subject: [PATCH 032/113] Problems fixed, continuing with the style previously
 adapted

---
 .../commands/DownloadAdaptiveExercise.java    | 13 +++-----
 .../TmcServerCommunicationTaskFactory.java    | 31 +------------------
 .../serialization/AdaptiveExerciseParser.java | 26 ++++++----------
 3 files changed, 16 insertions(+), 54 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 0193c59f..ef73b807 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -5,11 +5,9 @@
  */
 package fi.helsinki.cs.tmc.core.commands;
 
-import fi.helsinki.cs.tmc.core.communication.serialization.AdaptiveExerciseParser;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.Progress;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
-import java.util.concurrent.Callable;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,16 +29,15 @@ public Exercise call() throws Exception {
         Progress progress = new Progress(3);
         logger.info("Checking adaptive exercises availability");
         //informObserver
-        String json = tmcServerCommunicationTaskFactory.getJsonString().call();
-        AdaptiveExerciseParser aparser = new AdaptiveExerciseParser();
-        Exercise ex = aparser.parseFromJson(json);
+        Exercise exercise = 
+            tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
         //ex.setName = "jotain"
         //ex.setCourseName = "Jotain
         //Tallennuspolku riippuu edellämainituista nimistä (TMCroot)
-        byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(ex).call();
+        byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
         //checkInterrupt();
-        extractProject(zipb, ex, progress);
-        return ex;
+        extractProject(zipb, exercise, progress);
+        return exercise;
        // byte[] zip =  tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
     }
     
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 60a11fbd..242bae48 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -142,34 +142,7 @@ private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
         url = UriUtils.withQueryParam(url, "access_token", oauth.getToken());
         return url;
     }
-    
-    /**
-         *  Test for returning skillifier stuff.
-         *
-        * @return next.json URI
-        * @throws OAuthSystemException
-        * @throws OAuthProblemException
-        * @throws NotLoggedInException 
-        */
-    
-    public Callable<String> getJsonString(){
-        return wrapWithNotLoggedInException(new Callable<String>(){
-            @Override
-            public String call() throws Exception {
-                try {
-                    Callable<String> download = new HttpTasks().
-                        getForText(URI.create("localhost:3200/next.json"));
-                    String json = download.call();
-                    return json;
-                    }
-                catch (Exception ex) {
-                    return "{}";
-                }
-            }
-    });
-        
         
-    }
     public Callable<Exercise> getAdaptiveExercise() 
         throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
         return wrapWithNotLoggedInException(new Callable<Exercise>() {
@@ -179,9 +152,7 @@ public Exercise call() throws Exception {
                     Callable<String> download = new HttpTasks().
                         getForText(URI.create("localhost:3200/next.json"));
                     String json = download.call();
-                    Exercise ex = adaptiveExerciseParser.parseFromJson(json);
-                    Callable<byte[]> b = getDownloadingExerciseZipTask(ex);
-                    return ex;
+                    return adaptiveExerciseParser.parseFromJson(json);
                 }
                 catch (Exception ex) {
                     return null;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 6f01b710..38a11cfc 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -35,26 +35,20 @@ public Exercise parseFromJson(String json) {
             throw new IllegalArgumentException("Empty input");
         }
         try {;
-            Gson gson = new Gson();
-            JsonParser parser = new JsonParser();
-            JsonArray array = parser.parse(json).getAsJsonArray();
-            Boolean availability = gson.fromJson(array.get(0), Boolean.class);
-            //JSONObject obj = new JSONObject(json);
+            JSONObject obj = new JSONObject(json);
             // Check status
-            if (availability) {
-                String zip_url = gson.fromJson(array.get(1), String.class);
+            if (obj.getBoolean("availability")) {
+                String zip_url = obj.getString("zip_url");
                 Exercise ex = new Exercise();
                 ex.setDownloadUrl(URI.create(zip_url));
+                // Käytä GSonia parseemaan kuin Course
+                Gson gson =
+                        new GsonBuilder()
+                                .registerTypeAdapter(Date.class, new CustomDateDeserializer())
+                                .create();
+                Exercise exercise = gson.fromJson(json, Exercise.class);
+                // vanha return
                 return ex;
-                
-                // ...
-                
-                //byte[] zip;
-                // Gson
-                //gson = new GsonBuilder().create();
-                //ercise exercise = gson.fromJson(array.get(1), Exercise.class);
-                //return exercise;
-                //return zip_url;
             }
             return null;
         } catch (RuntimeException ex) {

From e457740395f3b90c19a11c7e0c22b66a4ed8dcb0 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Thu, 18 May 2017 09:55:26 +0300
Subject: [PATCH 033/113] Problems fixed, continuing with the style previously
 adapted

---
 .../core/communication/serialization/AdaptiveExerciseParser.java | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 38a11cfc..d4162769 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -48,6 +48,7 @@ public Exercise parseFromJson(String json) {
                                 .create();
                 Exercise exercise = gson.fromJson(json, Exercise.class);
                 // vanha return
+                // tyhjä kommentti koska branch llälä
                 return ex;
             }
             return null;

From dcba43705db18bc8fe6213814e6d36fe6b829bbd Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Thu, 18 May 2017 09:57:53 +0300
Subject: [PATCH 034/113] Problems fixed, continuing with the style previously
 adapted

---
 .../core/communication/serialization/AdaptiveExerciseParser.java | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index d4162769..fe5985c0 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -49,6 +49,7 @@ public Exercise parseFromJson(String json) {
                 Exercise exercise = gson.fromJson(json, Exercise.class);
                 // vanha return
                 // tyhjä kommentti koska branch llälä
+                // posdjgpofpgdfojofgjpofgjhfgojhgogf
                 return ex;
             }
             return null;

From 207ba32031bd7bbcaa48c4dc9951a69e37e6da05 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Thu, 18 May 2017 10:21:59 +0300
Subject: [PATCH 035/113] Added Tests for AdaptiveExerciseParser

---
 .../AdaptiveExerciseParserTest.java           | 23 ++++++++++++++-----
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 4583f17d..defc37ad 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -6,6 +6,7 @@
 package fi.helsinki.cs.tmc.core.communication.http.serialization;
 
 import fi.helsinki.cs.tmc.core.communication.serialization.AdaptiveExerciseParser;
+import fi.helsinki.cs.tmc.core.domain.Exercise;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -17,16 +18,26 @@
  */
 public class AdaptiveExerciseParserTest {
 
-    private AdaptiveExerciseParser aep;
-/*
+    private AdaptiveExerciseParser adaptiveParser;
+    
     @Before
     public void setUp() {
-        this.aep = new AdaptiveExerciseParser();
+        this.adaptiveParser = new AdaptiveExerciseParser();
     }
 
     @Test
-    public void parseFromJson() {
-        assertEquals(aep.parseFromJson("ögjdojgdpog"), null);
+    public void jsonEmptyException() {
+        assertEquals(null, new NullPointerException("Json string is null"));
+    }
+    
+    @Test
+    public void jsonIllegalException() {
+        assertEquals(" ", new IllegalArgumentException("Empty input"));
+    }
+    
+    @Test
+    public void exerciseHasZipUrl() {
+        Exercise exercise = adaptiveParser.parseFromJson("{ zip_url: not-empty }");
+        assertEquals(exercise.getZipUrl(), "not-empty");
     }
- */
 }

From 1ef28d28915c70930633059479de467d5144ae80 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Thu, 18 May 2017 10:27:44 +0300
Subject: [PATCH 036/113] parser editing and tests

---
 .../serialization/AdaptiveExerciseParser.java | 20 +++++++++----------
 .../AdaptiveExerciseParserTest.java           | 17 ++++++++++++----
 2 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 6f01b710..a47072b3 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -5,10 +5,7 @@
  */
 package fi.helsinki.cs.tmc.core.communication.serialization;
 
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonParser;
+import com.google.gson.*;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import java.net.URI;
@@ -35,14 +32,17 @@ public Exercise parseFromJson(String json) {
             throw new IllegalArgumentException("Empty input");
         }
         try {;
-            Gson gson = new Gson();
-            JsonParser parser = new JsonParser();
-            JsonArray array = parser.parse(json).getAsJsonArray();
-            Boolean availability = gson.fromJson(array.get(0), Boolean.class);
-            //JSONObject obj = new JSONObject(json);
+            //Gson gson = new Gson();
+            //JsonParser parser = new JsonParser();
+            //JsonElement element = parser.parse(json);
+            //JsonArray array = element.getAsJsonArray();
+            //Boolean availability = gson.fromJson(array.get(0), Boolean.class);
+            JSONObject obj = new JSONObject(json);
+            boolean availability = obj.getBoolean("available");
             // Check status
             if (availability) {
-                String zip_url = gson.fromJson(array.get(1), String.class);
+                String zip_url = obj.getString("zip_url");
+                //String zip_url = gson.fromJson(array.get(1), String.class);
                 Exercise ex = new Exercise();
                 ex.setDownloadUrl(URI.create(zip_url));
                 return ex;
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 4583f17d..12b302e4 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -7,9 +7,12 @@
 
 import fi.helsinki.cs.tmc.core.communication.serialization.AdaptiveExerciseParser;
 
+import fi.helsinki.cs.tmc.core.domain.Exercise;
 import org.junit.Before;
 import org.junit.Test;
 
+import java.net.URI;
+
 import static org.junit.Assert.*;
 
 /**
@@ -18,15 +21,21 @@
 public class AdaptiveExerciseParserTest {
 
     private AdaptiveExerciseParser aep;
-/*
+
     @Before
     public void setUp() {
         this.aep = new AdaptiveExerciseParser();
     }
 
     @Test
-    public void parseFromJson() {
-        assertEquals(aep.parseFromJson("ögjdojgdpog"), null);
+    public void adaptiveParserReturnsNullWhenNotAvailable() {
+        assertEquals(aep.parseFromJson("{ available: false }"), null);
     }
- */
+
+    @Test
+    public void adaptiveParserReturnsExerciseWhenAvailable() {
+        Exercise ex = aep.parseFromJson("{ available: true, zip_url: \"/path/to/zip\" }");
+        assertEquals(URI.create("/path/to/zip"), ex.getZipUrl());
+    }
+
 }

From e8b9c31a9609cab1a3c765dd28e1277efd45843a Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Thu, 18 May 2017 10:28:32 +0300
Subject: [PATCH 037/113] Fixes for new Tests

---
 .../http/serialization/AdaptiveExerciseParserTest.java        | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index defc37ad..65ebf29b 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -27,12 +27,12 @@ public void setUp() {
 
     @Test
     public void jsonEmptyException() {
-        assertEquals(null, new NullPointerException("Json string is null"));
+        assertEquals(adaptiveParser.parseFromJson(null), new NullPointerException("Json string is null"));
     }
     
     @Test
     public void jsonIllegalException() {
-        assertEquals(" ", new IllegalArgumentException("Empty input"));
+        assertEquals(adaptiveParser.parseFromJson(" "), new IllegalArgumentException("Empty input"));
     }
     
     @Test

From 4272963081bf2dad6ae94dc59b877a052bc97d3d Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Thu, 18 May 2017 10:33:56 +0300
Subject: [PATCH 038/113] Fixes for new Tests

---
 .../http/serialization/AdaptiveExerciseParserTest.java    | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 65ebf29b..039de675 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -25,14 +25,14 @@ public void setUp() {
         this.adaptiveParser = new AdaptiveExerciseParser();
     }
 
-    @Test
+    @Test(expected = NullPointerException.class)
     public void jsonEmptyException() {
-        assertEquals(adaptiveParser.parseFromJson(null), new NullPointerException("Json string is null"));
+        adaptiveParser.parseFromJson(null);
     }
     
-    @Test
+    @Test(expected = IllegalArgumentException.class)
     public void jsonIllegalException() {
-        assertEquals(adaptiveParser.parseFromJson(" "), new IllegalArgumentException("Empty input"));
+        adaptiveParser.parseFromJson(" ");
     }
     
     @Test

From 44e9cb6db0b2920c3ac451c02b4fa9fe4d32260b Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Thu, 18 May 2017 10:36:29 +0300
Subject: [PATCH 039/113] Fixes for new Tests

---
 .../serialization/AdaptiveExerciseParser.java             | 2 +-
 .../http/serialization/AdaptiveExerciseParserTest.java    | 8 +++++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index fe5985c0..de0103b3 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -37,7 +37,7 @@ public Exercise parseFromJson(String json) {
         try {;
             JSONObject obj = new JSONObject(json);
             // Check status
-            if (obj.getBoolean("availability")) {
+            if (obj.getBoolean("available")) {
                 String zip_url = obj.getString("zip_url");
                 Exercise ex = new Exercise();
                 ex.setDownloadUrl(URI.create(zip_url));
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 039de675..87742cd9 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -37,7 +37,13 @@ public void jsonIllegalException() {
     
     @Test
     public void exerciseHasZipUrl() {
-        Exercise exercise = adaptiveParser.parseFromJson("{ zip_url: not-empty }");
+        Exercise exercise = adaptiveParser.parseFromJson("{ available: true, zip_url: not-empty }");
+        assertEquals(exercise.getZipUrl(), "not-empty");
+    }
+    
+    @Test
+    public void exerciseNotAvailable() {
+        Exercise exercise = adaptiveParser.parseFromJson("{ available: false, zip_url: not-empty }");
         assertEquals(exercise.getZipUrl(), "not-empty");
     }
 }

From 950057507d9b751ba24e9bf50e0186e46768fcc9 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Thu, 18 May 2017 10:39:35 +0300
Subject: [PATCH 040/113] Fixes for new Tests

---
 .../http/serialization/AdaptiveExerciseParserTest.java         | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 87742cd9..036d74b1 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -38,12 +38,13 @@ public void jsonIllegalException() {
     @Test
     public void exerciseHasZipUrl() {
         Exercise exercise = adaptiveParser.parseFromJson("{ available: true, zip_url: not-empty }");
+        System.out.println(exercise.getZipUrl());
         assertEquals(exercise.getZipUrl(), "not-empty");
     }
     
     @Test
     public void exerciseNotAvailable() {
         Exercise exercise = adaptiveParser.parseFromJson("{ available: false, zip_url: not-empty }");
-        assertEquals(exercise.getZipUrl(), "not-empty");
+        assertEquals(exercise, null);
     }
 }

From b38761cc50b06cfcf4531e0a548de78657866619 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Thu, 18 May 2017 10:46:19 +0300
Subject: [PATCH 041/113] Fixes for new Tests

---
 .../http/serialization/AdaptiveExerciseParserTest.java          | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 036d74b1..9e5e28be 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -39,7 +39,7 @@ public void jsonIllegalException() {
     public void exerciseHasZipUrl() {
         Exercise exercise = adaptiveParser.parseFromJson("{ available: true, zip_url: not-empty }");
         System.out.println(exercise.getZipUrl());
-        assertEquals(exercise.getZipUrl(), "not-empty");
+        assertEquals(exercise.getZipUrl().toString(), "not-empty");
     }
     
     @Test

From 4ba5c733694895acb888ade6e776cce4034dbc27 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Thu, 18 May 2017 10:54:20 +0300
Subject: [PATCH 042/113] Imports and such little things fixed

---
 .../serialization/AdaptiveExerciseParser.java        | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index de0103b3..0ec41903 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -5,14 +5,14 @@
  */
 package fi.helsinki.cs.tmc.core.communication.serialization;
 
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonParser;
-import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
+
 import java.net.URI;
 import java.util.Date;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
 import org.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -23,8 +23,6 @@
  */
 public class AdaptiveExerciseParser {
     
-    // TODO: Parse exercise from address
-    
     private static final Logger logger = LoggerFactory.getLogger(AdaptiveExerciseParser.class);
 
     public Exercise parseFromJson(String json) {

From 8d550e2caa77177ea88ff7866dfa6a54e402b2b2 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Thu, 18 May 2017 11:19:42 +0300
Subject: [PATCH 043/113] New Tests for DownloadAdaptiveExercise

---
 .../DownloadAdaptiveExerciseTest.java         | 61 +++++++++++++++++++
 1 file changed, 61 insertions(+)
 create mode 100644 src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
new file mode 100644
index 00000000..985d5d7c
--- /dev/null
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -0,0 +1,61 @@
+package fi.helsinki.cs.tmc.core.commands;
+
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+import fi.helsinki.cs.tmc.core.commands.DownloadAdaptiveExercise;
+import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.domain.Exercise;
+import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
+import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
+import fi.helsinki.cs.tmc.langs.util.TaskExecutorImpl;
+
+import java.util.concurrent.Callable;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.mockito.Mock;
+import static org.mockito.Mockito.spy;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
+
+/**
+ *
+ * @author sakuolin
+ */
+public class DownloadAdaptiveExerciseTest {
+    
+    @Mock ProgressObserver mockObserver;
+    @Spy TmcSettings settings = new MockSettings();
+    @Mock Exercise exercise;
+
+    TaskExecutor langs;
+
+    private Command<Exercise> command;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        langs = spy(new TaskExecutorImpl());
+        TmcSettingsHolder.set(settings);
+        TmcLangsHolder.set(langs);
+        command = new DownloadAdaptiveExercise(mockObserver);
+    }
+    
+    @Test
+    public void exerciseExists() throws Exception {
+        exercise = command.call();
+        assertNotEquals(null, exercise);
+    }
+    
+}

From 5bfa059462a71300bc3d173f8bff1e3df05617e3 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Thu, 18 May 2017 11:25:44 +0300
Subject: [PATCH 044/113] Tests not viable, check functionality otherwise

---
 .../DownloadAdaptiveExerciseTest.java         | 61 -------------------
 1 file changed, 61 deletions(-)
 delete mode 100644 src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
deleted file mode 100644
index 985d5d7c..00000000
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package fi.helsinki.cs.tmc.core.commands;
-
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-
-import fi.helsinki.cs.tmc.core.commands.DownloadAdaptiveExercise;
-import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
-import fi.helsinki.cs.tmc.core.domain.Exercise;
-import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
-import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
-import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
-import fi.helsinki.cs.tmc.core.utils.MockSettings;
-import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
-import fi.helsinki.cs.tmc.langs.util.TaskExecutorImpl;
-
-import java.util.concurrent.Callable;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import static org.junit.Assert.*;
-import org.mockito.Mock;
-import static org.mockito.Mockito.spy;
-import org.mockito.MockitoAnnotations;
-import org.mockito.Spy;
-
-/**
- *
- * @author sakuolin
- */
-public class DownloadAdaptiveExerciseTest {
-    
-    @Mock ProgressObserver mockObserver;
-    @Spy TmcSettings settings = new MockSettings();
-    @Mock Exercise exercise;
-
-    TaskExecutor langs;
-
-    private Command<Exercise> command;
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        langs = spy(new TaskExecutorImpl());
-        TmcSettingsHolder.set(settings);
-        TmcLangsHolder.set(langs);
-        command = new DownloadAdaptiveExercise(mockObserver);
-    }
-    
-    @Test
-    public void exerciseExists() throws Exception {
-        exercise = command.call();
-        assertNotEquals(null, exercise);
-    }
-    
-}

From bc15546b2feeabe168eb19f2b4c42b4742fdf1f8 Mon Sep 17 00:00:00 2001
From: Qianyue Jin <jinzilailai@gmail.com>
Date: Thu, 18 May 2017 13:11:44 +0300
Subject: [PATCH 045/113] failed

---
 .../commands/DownloadAdaptiveExercise.java    | 30 +++++++++++++++----
 .../serialization/AdaptiveExerciseParser.java | 29 ++++++++++--------
 2 files changed, 42 insertions(+), 17 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index ef73b807..7c29241f 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -31,14 +31,34 @@ public Exercise call() throws Exception {
         //informObserver
         Exercise exercise = 
             tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
-        //ex.setName = "jotain"
-        //ex.setCourseName = "Jotain
+
+        //long nanotime = System.nanoTime();          
+        //exercise.setName("exname " + nanotime);     // set temp exercise name
+        //exercise.setCourseName("coname " + nanotime);   // set temp course name
         //Tallennuspolku riippuu edellämainituista nimistä (TMCroot)
+        
         byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
-        //checkInterrupt();
+        //checkInterrupt(); // jos tarvi???
+        
         extractProject(zipb, exercise, progress);
+
+        // säättää kurssi nimet puratun polun perusteella
+        //Path exerciseDirectory = TmcSettingsHolder.get().getTmcProjectDirectory();      // menee exercise directory (mihin unzippattu)
+        //Path unzipTempConameNanotime = exerciseDirectory.resolve(exercise.getCourseName()); // menee kansioon "coname " + nanotime
+        //Path unzipTempExnameNanotime = unzipTempConameNanotime.resolve(exercise.getName()); // menee kansioon "exname " + nanotime
+        //File unzipTempFolder = unzipTempExnameNanotime.toFile();
+        //File superFolderWithNameOsaa = unzipTempFolder.listFiles()[0]; // menee ainoaan kansioon, esim. "osaa01"
+        //exercise.setCourseName(superFolderWithNameOsaa.getName());  // set course name "osaa01" //tai???
+        //File exerciseFolder = superFolderWithNameOsaa.listFiles()[0]; // menee ainoaan tehtävän kansioon, esim. "Osaa01_01.AdaLovelace"
+        //exercise.setName(exerciseFolder.getName()); // exercise.setName(exer.getName().split(".")[1]); // set exercise name "AdaLovelace" //tai??
+        
+        // siirtää purattu tiedosto exercise directoryyn
+        // mv exercise_directory/"coname "+ nanotime / "exname " + nanotime / "osaa01" exercise_directocty 
+        //Files.move(superFolderWithNameOsaa.toPath(), exerciseDirectory);
+        // cleanup temp
+        // rmdir "coname " + nanotime
+        //Files.deleteIfExists(unzipTempConameNanotime);    
+        
         return exercise;
-       // byte[] zip =  tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
     }
-    
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 0ec41903..a9923d59 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -37,18 +37,23 @@ public Exercise parseFromJson(String json) {
             // Check status
             if (obj.getBoolean("available")) {
                 String zip_url = obj.getString("zip_url");
-                Exercise ex = new Exercise();
-                ex.setDownloadUrl(URI.create(zip_url));
-                // Käytä GSonia parseemaan kuin Course
-                Gson gson =
-                        new GsonBuilder()
-                                .registerTypeAdapter(Date.class, new CustomDateDeserializer())
-                                .create();
-                Exercise exercise = gson.fromJson(json, Exercise.class);
-                // vanha return
-                // tyhjä kommentti koska branch llälä
-                // posdjgpofpgdfojofgjpofgjhfgojhgogf
-                return ex;
+                
+                if (true){
+                    Exercise ex = new Exercise();
+                    ex.setDownloadUrl(URI.create(zip_url));
+                    return ex;
+                }else{
+                    // Käytä GSonia parseemaan kuin Course
+                    Gson gson =
+                            new GsonBuilder()
+                                    .registerTypeAdapter(Date.class, new CustomDateDeserializer())
+                                    .create();
+                    Exercise exercise = gson.fromJson(json, Exercise.class);
+                    // vanha return
+                    // tyhjä kommentti koska branch llälä
+                    // posdjgpofpgdfojofgjpofgjhfgojhgogf
+                    return exercise;
+                }
             }
             return null;
         } catch (RuntimeException ex) {

From 7901d4fdf7b554d8607a7399eaa9846b21eaa7e9 Mon Sep 17 00:00:00 2001
From: Qianyue Jin <jinzilailai@gmail.com>
Date: Thu, 18 May 2017 14:55:17 +0300
Subject: [PATCH 046/113] new

---
 .../commands/DownloadAdaptiveExercise.java    | 108 +++++++++++++++---
 .../ExerciseDownloadFailedException.java      |   5 +
 .../ExtractingExericeFailedException.java     |   7 ++
 3 files changed, 106 insertions(+), 14 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 7c29241f..2866129d 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -8,6 +8,16 @@
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.Progress;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.exceptions.ExerciseDownloadFailedException;
+import fi.helsinki.cs.tmc.core.exceptions.ExtractingExericeFailedException;
+import fi.helsinki.cs.tmc.core.exceptions.TmcInterruptionException;
+import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.logging.Level;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -40,25 +50,95 @@ public Exercise call() throws Exception {
         byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
         //checkInterrupt(); // jos tarvi???
         
-        extractProject(zipb, exercise, progress);
+        //extractProject(zipb, exercise, progress);
 
         // säättää kurssi nimet puratun polun perusteella
-        //Path exerciseDirectory = TmcSettingsHolder.get().getTmcProjectDirectory();      // menee exercise directory (mihin unzippattu)
+        Path exerciseDirectory = TmcSettingsHolder.get().getTmcProjectDirectory();      // menee exercise directory (mihin unzippattu)
+        
+        Path unzippedFolderTemp = extractToTempFolder(zipb, exercise, progress);
+        cleanExtractedExerciseWithTempNames(exercise, unzippedFolderTemp, exerciseDirectory);
+        
+        return exercise;
+    }
+    
+    private Path extractToTempFolder (byte[] zipb, Exercise exercise, Progress progress) 
+        throws ExtractingExericeFailedException, ExerciseDownloadFailedException, TmcInterruptionException{
+        logger.info("Extracting exercise");
+        Path zipTemp; 
+        logger.debug("Writing zip to temporary location");
+        try {
+            zipTemp = Files.createTempFile("tmc-exercise-", ".zip");
+            Files.write(zipTemp, zipb);
+            logger.debug("Successfully write temporary exercise zip to dist");
+        } catch (IOException ex) {
+            logger.warn("Failed to write downloaded zip to disk", ex);
+            throw new ExerciseDownloadFailedException(exercise.getDownloadUrl(), ex);
+        }
+        checkInterrupt();
+        logger.debug("Zip file successfully written");
+        
+        
+        informObserver(progress.incrementAndGet(), "Extracting exercise from " + exercise.getDownloadUrl());
+        Path unzipFolderTemp = null;
+        try {
+            unzipFolderTemp = Files.createTempDirectory("tmc-exercise-unzipped-"+System.nanoTime());
+            try{
+                TmcLangsHolder.get().extractProject(zipTemp, unzipFolderTemp);
+                logger.info("Successfully extracted exercise");
+            } catch (Exception ex) {
+                logger.warn(
+                        "Failed to extract project from "
+                            + zipTemp
+                            + " to "
+                            + unzipFolderTemp,
+                        ex);
+                throw new ExtractingExericeFailedException(exercise.getDownloadUrl(), ex);
+            }
+        }
+        catch (IOException ex) {
+            logger.warn("Failed to create temporary folder tmc-exercise-unzipped");
+            throw new ExtractingExericeFailedException(exercise.getDownloadUrl(), ex);
+        }
+        
+        try {
+            Files.deleteIfExists(zipTemp);
+            logger.debug("Cleaned up temporary zip files");
+        } catch (IOException ex) {
+            logger.warn("Failed to delete temporary exercise zip from " + zipTemp, ex);
+        }
+        
+        return unzipFolderTemp;
+    }
+    
+    private void cleanExtractedExerciseWithTempNames(Exercise exercise, Path unzipFolderTemp, Path exerciseDirectory) {
         //Path unzipTempConameNanotime = exerciseDirectory.resolve(exercise.getCourseName()); // menee kansioon "coname " + nanotime
         //Path unzipTempExnameNanotime = unzipTempConameNanotime.resolve(exercise.getName()); // menee kansioon "exname " + nanotime
         //File unzipTempFolder = unzipTempExnameNanotime.toFile();
         //File superFolderWithNameOsaa = unzipTempFolder.listFiles()[0]; // menee ainoaan kansioon, esim. "osaa01"
-        //exercise.setCourseName(superFolderWithNameOsaa.getName());  // set course name "osaa01" //tai???
-        //File exerciseFolder = superFolderWithNameOsaa.listFiles()[0]; // menee ainoaan tehtävän kansioon, esim. "Osaa01_01.AdaLovelace"
-        //exercise.setName(exerciseFolder.getName()); // exercise.setName(exer.getName().split(".")[1]); // set exercise name "AdaLovelace" //tai??
-        
-        // siirtää purattu tiedosto exercise directoryyn
-        // mv exercise_directory/"coname "+ nanotime / "exname " + nanotime / "osaa01" exercise_directocty 
-        //Files.move(superFolderWithNameOsaa.toPath(), exerciseDirectory);
-        // cleanup temp
-        // rmdir "coname " + nanotime
-        //Files.deleteIfExists(unzipTempConameNanotime);    
-        
-        return exercise;
+        File superFolderWithNameOsaa = unzipFolderTemp.toFile().listFiles()[0]; // menee ainoaan kansioon, esim. "osaa01"
+        exercise.setCourseName(superFolderWithNameOsaa.getName());  // set course name "osaa01" //tai???
+        File exerciseFolder = superFolderWithNameOsaa.listFiles()[0]; // menee ainoaan tehtävän kansioon, esim. "Osaa01_01.AdaLovelace"
+        exercise.setName(exerciseFolder.getName()); // exercise.setName(exer.getName().split(".")[1]); // set exercise name "AdaLovelace" //tai??
+        try {
+            // siirtää purattu tiedosto exercise directoryyn
+            // mv exercise_directory/"coname "+ nanotime / "exname " + nanotime / "osaa01" exercise_directocty
+            logger.info("start moving temporary unzip to final location");
+            Files.move(superFolderWithNameOsaa.toPath(), exerciseDirectory);
+            logger.debug("successfully moved temporary unzip to final location");
+        }
+        catch (IOException ex) {
+            logger.warn("Failed to move temporary unzip exercise to final location" + unzipFolderTemp, ex);
+            // throw jtn
+        }
+        try {
+            // cleanup temp
+            // rmdir "coname " + nanotime
+            //Files.deleteIfExists(unzipTempConameNanotime);
+            Files.deleteIfExists(unzipFolderTemp);
+            logger.debug("successfully deleted temporary unzip folder");
+        }
+        catch (IOException ex) {
+            logger.warn("Failed to delete temporary unzip folder");
+        }
     }
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExerciseDownloadFailedException.java b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExerciseDownloadFailedException.java
index 691b1c8c..0e8fe71d 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExerciseDownloadFailedException.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExerciseDownloadFailedException.java
@@ -3,10 +3,15 @@
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 
 import java.io.IOException;
+import java.net.URI;
 
 public class ExerciseDownloadFailedException extends TmcCoreException {
 
     public ExerciseDownloadFailedException(Exercise exercise, Exception ex) {
         super("Downloading exercise " + exercise.getName() + " failed", ex);
     }
+    
+    public ExerciseDownloadFailedException(URI url, Exception ex){
+        super("Write exercise zip to disk from " + url.toString() + " failed", ex);
+    }
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExtractingExericeFailedException.java b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExtractingExericeFailedException.java
index 88dc5af5..98364294 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExtractingExericeFailedException.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExtractingExericeFailedException.java
@@ -1,9 +1,16 @@
 package fi.helsinki.cs.tmc.core.exceptions;
 
 import fi.helsinki.cs.tmc.core.domain.Exercise;
+import java.net.URI;
 
 public class ExtractingExericeFailedException extends TmcCoreException {
     public ExtractingExericeFailedException(Exercise exercise, Exception ex) {
         super("Extracting zip for " + exercise.getName() + " failed", ex);
     }
+    
+    // extract exercise when name is unknown, 
+    public ExtractingExericeFailedException(URI url, Exception ex) {
+        super("Extracting zip from " + url.toString() + " failed", ex);
+    }
+    
 }

From 599a489205de3cf13efc66a4fe94a522407d15c7 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Thu, 18 May 2017 15:05:47 +0300
Subject: [PATCH 047/113] tests??

---
 .../commands/DownloadAdaptiveExercise.java    |  11 ++
 .../DownloadAdaptiveExerciseTest.java         | 102 ++++++++++++++++++
 2 files changed, 113 insertions(+)
 create mode 100644 src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 7c29241f..472f17de 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -5,6 +5,8 @@
  */
 package fi.helsinki.cs.tmc.core.commands;
 
+import com.google.common.annotations.VisibleForTesting;
+import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.Progress;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
@@ -12,6 +14,8 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.List;
+
 /**
  *
  * @author sakuolin
@@ -24,6 +28,13 @@ public DownloadAdaptiveExercise(ProgressObserver observer) {
         super(observer);
     }
 
+    @VisibleForTesting
+    DownloadAdaptiveExercise(
+        ProgressObserver observer,
+        TmcServerCommunicationTaskFactory tmcServerCommunicationTaskFactory) {
+        super(observer, tmcServerCommunicationTaskFactory);
+    }
+
     @Override
     public Exercise call() throws Exception {
         Progress progress = new Progress(3);
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
new file mode 100644
index 00000000..307cfdf0
--- /dev/null
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -0,0 +1,102 @@
+package fi.helsinki.cs.tmc.core.commands;
+
+import com.google.common.collect.Lists;
+import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.domain.Course;
+import fi.helsinki.cs.tmc.core.domain.Exercise;
+import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
+import fi.helsinki.cs.tmc.core.utils.TestUtils;
+import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
+import fi.helsinki.cs.tmc.langs.util.TaskExecutorImpl;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.List;
+import java.util.concurrent.Callable;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.*;
+
+/**
+ * Created by markovai on 18.5.2017.
+ */
+public class DownloadAdaptiveExerciseTest {
+
+    @Rule
+    public TemporaryFolder testFolder = new TemporaryFolder();
+
+    @Mock
+    ProgressObserver mockObserver;
+    @Spy
+    TmcSettings settings = new MockSettings();
+    @Mock
+    TmcServerCommunicationTaskFactory factory;
+    @Mock
+    Course mockCourse;
+    @Mock
+    Exercise mockExerciseOne;
+    @Mock
+    Callable<Exercise> mockGetAdaptiveExercise;
+
+    TaskExecutor langs;
+    Path arithFuncsTempDir;
+
+    private Command<Exercise> command;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        langs = spy(new TaskExecutorImpl());
+        TmcSettingsHolder.set(settings);
+        TmcLangsHolder.set(langs);
+        arithFuncsTempDir = testFolder.getRoot().toPath().resolve("arith_funcs");
+        command = new DownloadAdaptiveExercise(mockObserver, factory);
+
+        doCallRealMethod().when(langs).extractProject(any(Path.class), any(Path.class));
+        mockExerciseOne.setName("ex1");
+        mockExerciseOne.setCourseName("course1");
+    }
+
+    @Test
+    public void testSuccess() throws Exception {
+        verifyZeroInteractions(langs);
+
+        when(factory.getAdaptiveExercise()).thenReturn(mockGetAdaptiveExercise);
+        when(mockGetAdaptiveExercise.call()).thenReturn(mockExerciseOne);
+
+        when(mockExerciseOne.getExtractionTarget(any(Path.class))).thenReturn(arithFuncsTempDir);
+        when(settings.getTmcProjectDirectory()).thenReturn(testFolder.getRoot().toPath());
+
+        when(factory.getDownloadingExerciseZipTask(mockExerciseOne))
+            .thenReturn(
+                new Callable<byte[]>() {
+                    @Override
+                    public byte[] call() throws Exception {
+                        return Files.readAllBytes(
+                            TestUtils.getZip(this.getClass(), "arith_funcs.zip"));
+                    }
+                });
+
+        Exercise exercise = command.call();
+
+        verify(factory).getDownloadingExerciseZipTask(mockExerciseOne);
+        //verifyNoMoreInteractions(factory);
+
+        assertTrue(Files.exists(arithFuncsTempDir));
+        // TODO: check for contents?
+    }
+
+}

From 5a57b183d2101739c7136e6a3094b27e1ddcd705 Mon Sep 17 00:00:00 2001
From: Qianyue Jin <jinzilailai@gmail.com>
Date: Thu, 18 May 2017 16:17:13 +0300
Subject: [PATCH 048/113] jtn

---
 .../cs/tmc/core/commands/DownloadAdaptiveExercise.java       | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 2866129d..d69b6549 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -52,10 +52,11 @@ public Exercise call() throws Exception {
         
         //extractProject(zipb, exercise, progress);
 
-        // säättää kurssi nimet puratun polun perusteella
         Path exerciseDirectory = TmcSettingsHolder.get().getTmcProjectDirectory();      // menee exercise directory (mihin unzippattu)
         
         Path unzippedFolderTemp = extractToTempFolder(zipb, exercise, progress);
+        // säättää kurssi nimet puratun polun perusteella
+        // unzip temp pois
         cleanExtractedExerciseWithTempNames(exercise, unzippedFolderTemp, exerciseDirectory);
         
         return exercise;
@@ -116,7 +117,7 @@ private void cleanExtractedExerciseWithTempNames(Exercise exercise, Path unzipFo
         //File unzipTempFolder = unzipTempExnameNanotime.toFile();
         //File superFolderWithNameOsaa = unzipTempFolder.listFiles()[0]; // menee ainoaan kansioon, esim. "osaa01"
         File superFolderWithNameOsaa = unzipFolderTemp.toFile().listFiles()[0]; // menee ainoaan kansioon, esim. "osaa01"
-        exercise.setCourseName(superFolderWithNameOsaa.getName());  // set course name "osaa01" //tai???
+        //exercise.setCourseName(superFolderWithNameOsaa.getName());  // set course name "osaa01" //tai???
         File exerciseFolder = superFolderWithNameOsaa.listFiles()[0]; // menee ainoaan tehtävän kansioon, esim. "Osaa01_01.AdaLovelace"
         exercise.setName(exerciseFolder.getName()); // exercise.setName(exer.getName().split(".")[1]); // set exercise name "AdaLovelace" //tai??
         try {

From 137b0fade5e92f8447684e9c299f32466c767f66 Mon Sep 17 00:00:00 2001
From: fogre <antti.kotiranta@helsinki.fi>
Date: Thu, 18 May 2017 16:23:44 +0300
Subject: [PATCH 049/113] Json parser finished

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |  5 --
 .../commands/DownloadAdaptiveExercise.java    |  4 +-
 .../commands/DownloadExerciseByZipString.java | 39 ----------
 .../TmcServerCommunicationTaskFactory.java    |  9 ++-
 .../serialization/AdaptiveExerciseParser.java | 15 +---
 .../DownloadAdaptiveExerciseTest.java         | 73 +++++++++++++++++++
 .../AdaptiveExerciseParserTest.java           |  2 +-
 7 files changed, 86 insertions(+), 61 deletions(-)
 delete mode 100644 src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadExerciseByZipString.java
 create mode 100644 src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 35adada7..e3fa73a3 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -2,7 +2,6 @@
 
 import fi.helsinki.cs.tmc.core.commands.AuthenticateUser;
 import fi.helsinki.cs.tmc.core.commands.DownloadCompletedExercises;
-import fi.helsinki.cs.tmc.core.commands.DownloadExerciseByZipString;
 import fi.helsinki.cs.tmc.core.commands.DownloadModelSolution;
 import fi.helsinki.cs.tmc.core.commands.DownloadOrUpdateExercises;
 import fi.helsinki.cs.tmc.core.commands.DownloadAdaptiveExercise;
@@ -182,10 +181,6 @@ public Callable<Exercise> downloadAdaptiveExercise(ProgressObserver observer) {
         return new ExceptionTrackingCallable<>(new DownloadAdaptiveExercise(observer));
     }
     
-    public Callable<Exercise> downloadExerciseByZipString(ProgressObserver observer, String zip) {
-        return new ExceptionTrackingCallable<>(new DownloadExerciseByZipString(observer,zip));
-    }
-    
     /**
      * NOT IMPLEMENTED!
      *
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index ef73b807..9028d515 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -34,9 +34,9 @@ public Exercise call() throws Exception {
         //ex.setName = "jotain"
         //ex.setCourseName = "Jotain
         //Tallennuspolku riippuu edellämainituista nimistä (TMCroot)
-        byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
+        //byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
         //checkInterrupt();
-        extractProject(zipb, exercise, progress);
+        //extractProject(zipb, exercise, progress);
         return exercise;
        // byte[] zip =  tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
     }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadExerciseByZipString.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadExerciseByZipString.java
deleted file mode 100644
index a1a6757d..00000000
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadExerciseByZipString.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package fi.helsinki.cs.tmc.core.commands;
-
-import fi.helsinki.cs.tmc.core.communication.http.HttpTasks;
-import fi.helsinki.cs.tmc.core.domain.Exercise;
-import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
-import java.net.URI;
-import java.util.concurrent.Callable;
-
-/**
- *
- * @author lai
- */
-public class DownloadExerciseByZipString extends Command<Exercise>{
-    private String zip;
-    public DownloadExerciseByZipString(ProgressObserver observer,String zip) {
-        super(observer);
-        this.zip=zip;
-    }
-    
-    private String ToUrlByZipAndServerPath(String zip, String serverPath) {
-        return serverPath + zip;
-    }
-    
-    private Exercise ExtractExerciseByBytes(byte[] input){
-        return null; //ExerciseDownloadingCommand.java
-    }
-    
-    @Override
-    public Exercise call() throws Exception {
-        Callable<byte[]> download = new HttpTasks().getForBinary(URI.create(ToUrlByZipAndServerPath(zip, ""))); //mooc.helsin
-        return ExtractExerciseByBytes(download.call());
-    }
-    
-}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 242bae48..fc1f441b 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -28,6 +28,7 @@
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.google.gson.reflect.TypeToken;
+import java.io.BufferedReader;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
@@ -35,8 +36,10 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.net.URI;
+import java.net.URL;
 import java.nio.charset.Charset;
 import java.util.Collections;
 import java.util.HashMap;
@@ -142,15 +145,17 @@ private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
         url = UriUtils.withQueryParam(url, "access_token", oauth.getToken());
         return url;
     }
-        
+    
     public Callable<Exercise> getAdaptiveExercise() 
         throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
         return wrapWithNotLoggedInException(new Callable<Exercise>() {
             @Override
             public Exercise call() throws Exception {
                 try {
+                    //Testit menee lävitse generaattorilla luodulla json tiedostolla.
+                    //Seuraavaksi pitäisi ajaa skillifier lokaalisesti ja tarkistaa että metodi toimii next.jsonilla
                     Callable<String> download = new HttpTasks().
-                        getForText(URI.create("localhost:3200/next.json"));
+                                        getForText(URI.create("http://www.json-generator.com/api/json/get/bRTQibwrNe?indent=2"));
                     String json = download.call();
                     return adaptiveExerciseParser.parseFromJson(json);
                 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 0ec41903..887bfb03 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -32,22 +32,13 @@ public Exercise parseFromJson(String json) {
         if (json.trim().isEmpty()) {
             throw new IllegalArgumentException("Empty input");
         }
-        try {;
+        try {
             JSONObject obj = new JSONObject(json);
             // Check status
-            if (obj.getBoolean("available")) {
+            if (obj.getBoolean("available")) {                
                 String zip_url = obj.getString("zip_url");
                 Exercise ex = new Exercise();
-                ex.setDownloadUrl(URI.create(zip_url));
-                // Käytä GSonia parseemaan kuin Course
-                Gson gson =
-                        new GsonBuilder()
-                                .registerTypeAdapter(Date.class, new CustomDateDeserializer())
-                                .create();
-                Exercise exercise = gson.fromJson(json, Exercise.class);
-                // vanha return
-                // tyhjä kommentti koska branch llälä
-                // posdjgpofpgdfojofgjpofgjhfgojhgogf
+                ex.setZipUrl(URI.create("localhost:3200/"+zip_url));//localhost
                 return ex;
             }
             return null;
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
new file mode 100644
index 00000000..fa6d361b
--- /dev/null
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -0,0 +1,73 @@
+package fi.helsinki.cs.tmc.core.commands;
+
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.List;
+import java.util.concurrent.Callable;
+import static com.google.common.truth.Truth.assertThat;
+import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.domain.Exercise;
+import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
+import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
+import fi.helsinki.cs.tmc.langs.util.TaskExecutorImpl;
+import java.net.URI;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.verify;
+
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+/**
+ *
+ * @author fogh
+ */
+public class DownloadAdaptiveExerciseTest {
+    
+    @Mock ProgressObserver mockObserver;
+    @Spy TmcSettings settings = new MockSettings();
+    @Mock TmcServerCommunicationTaskFactory factory;
+    TaskExecutor langs;
+    private Command<Exercise> command;
+    
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        langs = spy(new TaskExecutorImpl());
+        TmcSettingsHolder.set(settings);
+        TmcLangsHolder.set(langs);
+        command = new DownloadAdaptiveExercise(mockObserver);
+        
+    }
+    
+    @Test
+    public void checkExerciseZipUrl() throws Exception {
+        DownloadAdaptiveExercise e = new DownloadAdaptiveExercise(mockObserver);
+        Exercise exercise = e.call();
+        System.out.println(exercise.getZipUrl().toString());
+    }
+
+
+    // TODO add test methods here.
+    // The methods must be annotated with annotation @Test. For example:
+    //
+    // @Test
+    // public void hello() {}
+}
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 9e5e28be..92e9450c 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -39,7 +39,7 @@ public void jsonIllegalException() {
     public void exerciseHasZipUrl() {
         Exercise exercise = adaptiveParser.parseFromJson("{ available: true, zip_url: not-empty }");
         System.out.println(exercise.getZipUrl());
-        assertEquals(exercise.getZipUrl().toString(), "not-empty");
+        assertEquals(exercise.getZipUrl().toString(), "localhost:3200/not-empty");
     }
     
     @Test

From 8164218275e7b2c6de07114fe351a2cbaa39c018 Mon Sep 17 00:00:00 2001
From: sakuolin <saku.olin@helsinki.fi>
Date: Thu, 18 May 2017 20:53:14 +0300
Subject: [PATCH 050/113] Skillifier connecting fixed, downloading exercises
 fixed

---
 .../cs/tmc/core/commands/DownloadAdaptiveExercise.java    | 8 ++++----
 .../communication/TmcServerCommunicationTaskFactory.java  | 4 ++--
 .../tmc/core/communication/http/HttpRequestExecutor.java  | 2 +-
 .../serialization/AdaptiveExerciseParser.java             | 2 +-
 .../tmc/core/commands/DownloadAdaptiveExerciseTest.java   | 1 -
 5 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 9028d515..9e0f4c82 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -31,14 +31,14 @@ public Exercise call() throws Exception {
         //informObserver
         Exercise exercise = 
             tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
-        //ex.setName = "jotain"
-        //ex.setCourseName = "Jotain
+        exercise.setName("ass!");
+        exercise.setCourseName("porsk!");
         //Tallennuspolku riippuu edellämainituista nimistä (TMCroot)
-        //byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
+        byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
+        System.out.println(zipb.length);
         //checkInterrupt();
         //extractProject(zipb, exercise, progress);
         return exercise;
-       // byte[] zip =  tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
     }
     
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index fc1f441b..8a8ec320 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -155,7 +155,7 @@ public Exercise call() throws Exception {
                     //Testit menee lävitse generaattorilla luodulla json tiedostolla.
                     //Seuraavaksi pitäisi ajaa skillifier lokaalisesti ja tarkistaa että metodi toimii next.jsonilla
                     Callable<String> download = new HttpTasks().
-                                        getForText(URI.create("http://www.json-generator.com/api/json/get/bRTQibwrNe?indent=2"));
+                                        getForText(URI.create("http://localhost:3200/next.json"));
                     String json = download.call();
                     return adaptiveExerciseParser.parseFromJson(json);
                 }
@@ -227,7 +227,7 @@ public Callable<byte[]> getDownloadingExerciseZipTask(Exercise exercise) {
         URI zipUrl = exercise.getDownloadUrl();
         return new HttpTasks().getForBinary(zipUrl);
     }
-
+    
     public Callable<byte[]> getDownloadingExerciseSolutionZipTask(Exercise exercise) {
         URI zipUrl = exercise.getSolutionDownloadUrl();
         return new HttpTasks().getForBinary(zipUrl);
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpRequestExecutor.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpRequestExecutor.java
index c5287e09..f8877cc0 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpRequestExecutor.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpRequestExecutor.java
@@ -47,7 +47,7 @@
     private final Object shutdownLock = new Object();
 
     private int timeout = DEFAULT_TIMEOUT;
-    private HttpUriRequest request;
+    public HttpUriRequest request;
     private UsernamePasswordCredentials credentials; // May be null
 
     /*package*/ HttpRequestExecutor(URI url) {
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 887bfb03..e59caf37 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -38,7 +38,7 @@ public Exercise parseFromJson(String json) {
             if (obj.getBoolean("available")) {                
                 String zip_url = obj.getString("zip_url");
                 Exercise ex = new Exercise();
-                ex.setZipUrl(URI.create("localhost:3200/"+zip_url));//localhost
+                ex.setDownloadUrl(URI.create("http://localhost:3200"+zip_url));//localhost
                 return ex;
             }
             return null;
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index fa6d361b..ffc0b729 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -61,7 +61,6 @@ public void setUp() {
     public void checkExerciseZipUrl() throws Exception {
         DownloadAdaptiveExercise e = new DownloadAdaptiveExercise(mockObserver);
         Exercise exercise = e.call();
-        System.out.println(exercise.getZipUrl().toString());
     }
 
 

From 0eb5471c3bd02fbc43bb475bf324d12eb086af8c Mon Sep 17 00:00:00 2001
From: sakuolin <saku.olin@helsinki.fi>
Date: Thu, 18 May 2017 21:40:33 +0300
Subject: [PATCH 051/113] Tests fixed, other small fixes

---
 .../serialization/AdaptiveExerciseParser.java      | 14 +++++---------
 .../serialization/AdaptiveExerciseParserTest.java  |  7 +++----
 2 files changed, 8 insertions(+), 13 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index e59caf37..fc5f367f 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -8,10 +8,6 @@
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 
 import java.net.URI;
-import java.util.Date;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
 
 import org.json.JSONObject;
 import org.slf4j.Logger;
@@ -34,12 +30,12 @@ public Exercise parseFromJson(String json) {
         }
         try {
             JSONObject obj = new JSONObject(json);
-            // Check status
             if (obj.getBoolean("available")) {                
-                String zip_url = obj.getString("zip_url");
-                Exercise ex = new Exercise();
-                ex.setDownloadUrl(URI.create("http://localhost:3200"+zip_url));//localhost
-                return ex;
+                Exercise exercise = new Exercise();
+                exercise.setDownloadUrl
+                    // localhost, where is Skillifier hosted?
+                    (URI.create("http://localhost:3200" + obj.getString("zip_url")));
+                return exercise;
             }
             return null;
         } catch (RuntimeException ex) {
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 92e9450c..6973abc7 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -37,14 +37,13 @@ public void jsonIllegalException() {
     
     @Test
     public void exerciseHasZipUrl() {
-        Exercise exercise = adaptiveParser.parseFromJson("{ available: true, zip_url: not-empty }");
-        System.out.println(exercise.getZipUrl());
-        assertEquals(exercise.getZipUrl().toString(), "localhost:3200/not-empty");
+        Exercise exercise = adaptiveParser.parseFromJson("{ available: true, zip_url: additionToString }");
+        assertEquals(exercise.getDownloadUrl().toString(), "http://localhost:3200additionToString");
     }
     
     @Test
     public void exerciseNotAvailable() {
-        Exercise exercise = adaptiveParser.parseFromJson("{ available: false, zip_url: not-empty }");
+        Exercise exercise = adaptiveParser.parseFromJson("{ available: false, zip_url: additionToString }");
         assertEquals(exercise, null);
     }
 }

From 02c2b2997fc237b4dd5d93e452f624c773e7350a Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio@helsinki.fi>
Date: Thu, 18 May 2017 22:11:33 +0300
Subject: [PATCH 052/113] uncommented extracting, tests work

---
 .../cs/tmc/core/commands/DownloadAdaptiveExercise.java        | 2 +-
 .../cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java    | 4 +---
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 965fb49f..3f97e8ab 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -48,7 +48,7 @@ public Exercise call() throws Exception {
         byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
         System.out.println(zipb.length);
         //checkInterrupt();
-        //extractProject(zipb, exercise, progress);
+        extractProject(zipb, exercise, progress);
         return exercise;
     }
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index a0936048..be4c3adc 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -77,7 +77,6 @@ public void setUp() throws IOException {
         langs = spy(new TaskExecutorImpl());
         TmcSettingsHolder.set(settings);
         TmcLangsHolder.set(langs);
-        command = new DownloadAdaptiveExercise(mockObserver);
         arithFuncsTempDir = testFolder.getRoot().toPath().resolve("arith_funcs");
         command = new DownloadAdaptiveExercise(mockObserver, factory);
 
@@ -87,7 +86,6 @@ public void setUp() throws IOException {
 
     }
 
-    //pari kohtaa kommentoitu pois koska tehtavia ei pureta DownloadAdaptiveExercise: ssa (viela)
     @Test
     public void checkExerciseZipUrl() throws Exception {
         setUpMocks();
@@ -106,7 +104,7 @@ public void testDownloadAndExtractSuccess() throws Exception {
 
         verifyNoMoreInteractions(factory);
 
-        //assertTrue(Files.exists(arithFuncsTempDir));
+        assertTrue(Files.exists(arithFuncsTempDir));
         // TODO: check for contents?
     }
 

From f39c4ee0ac520ff9f46f80489151fe71d6561351 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Fri, 19 May 2017 10:21:50 +0300
Subject: [PATCH 053/113] more tests

---
 .../commands/DownloadAdaptiveExercise.java     |   8 +++++---
 .../commands/DownloadAdaptiveExerciseTest.java |  14 ++++++++++++++
 src/test/resources/__files/test.zip            | Bin 0 -> 729120 bytes
 3 files changed, 19 insertions(+), 3 deletions(-)
 create mode 100644 src/test/resources/__files/test.zip

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 3f97e8ab..78ce4aec 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -17,11 +17,10 @@
 import java.util.List;
 
 /**
- *
  * @author sakuolin
  */
 public class DownloadAdaptiveExercise extends ExerciseDownloadingCommand<Exercise> {
-    
+
     private static final Logger logger = LoggerFactory.getLogger(SendFeedback.class);
 
     public DownloadAdaptiveExercise(ProgressObserver observer) {
@@ -40,8 +39,11 @@ public Exercise call() throws Exception {
         Progress progress = new Progress(3);
         logger.info("Checking adaptive exercises availability");
         //informObserver
-        Exercise exercise = 
+        Exercise exercise =
             tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
+        if (exercise == null) {
+            return null;
+        }
         exercise.setName("ass!");
         exercise.setCourseName("porsk!");
         //Tallennuspolku riippuu edellämainituista nimistä, polku: maindirectory/courseName/exerciseName
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index be4c3adc..5c914a41 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -108,6 +108,20 @@ public void testDownloadAndExtractSuccess() throws Exception {
         // TODO: check for contents?
     }
 
+    @Test
+    public void testDownloadAndExtractFailure() throws Exception {
+        setUpMocks();
+        when(mockGetAdaptiveExercise.call()).thenReturn(null);
+
+        Exercise exercise = command.call();
+
+        verify(factory).getAdaptiveExercise();
+
+        verifyNoMoreInteractions(factory);
+
+        // TODO: check for contents?
+    }
+
     private void setUpMocks() throws Exception {
         verifyZeroInteractions(langs);
 
diff --git a/src/test/resources/__files/test.zip b/src/test/resources/__files/test.zip
new file mode 100644
index 0000000000000000000000000000000000000000..c23c97cab7521c1c0635f9cf388a3e2a499aa177
GIT binary patch
literal 729120
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%0AF|G8>Mpw20hpHKmP-<w=q=A!S
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
S4|+cE!wo(_76drKU;hR6xJcRn

literal 0
HcmV?d00001


From 2f4ccdefac4c4b7ee43d9736e2541593256ce46f Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Fri, 19 May 2017 11:48:00 +0300
Subject: [PATCH 054/113] downlkoadAndExtractFromLocalhostTest

---
 .../DownloadAdaptiveExerciseTest.java         | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index 5c914a41..65e28dd3 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -16,6 +16,7 @@
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.List;
 import java.util.concurrent.Callable;
 
@@ -141,4 +142,22 @@ public byte[] call() throws Exception {
                     }
                 });
     }
+
+    @Test
+    public void testDownloadAndExtractSuccessWithRealZip() throws Exception {
+        verifyZeroInteractions(langs);
+        TmcServerCommunicationTaskFactory realFactory = new TmcServerCommunicationTaskFactory();
+        assertNotNull(TmcSettingsHolder.get());
+        command = new DownloadAdaptiveExercise(mockObserver, realFactory);
+
+        when(settings.getTmcProjectDirectory()).thenReturn(Paths.get(System.getProperty("user.dir")));
+
+        Exercise exercise = command.call();
+
+        verifyNoMoreInteractions(factory);
+
+        assertTrue(Files.exists(Paths.get(System.getProperty("user.dir"))));
+        Files.deleteIfExists(Paths.get(System.getProperty("user.dir")).resolve("porsk!"));
+        // TODO: check for contents?
+    }
 }

From d567229404411fbf38a7f8f050fa35f4bc4c8ba8 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Fri, 19 May 2017 12:21:07 +0300
Subject: [PATCH 055/113] downloadAndExtractRealZipFromLocalhostTest without
 localhost connection

---
 .../commands/DownloadAdaptiveExerciseTest.java  | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index 65e28dd3..1a0c8ec6 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -7,6 +7,7 @@
  */
 
 import fi.helsinki.cs.tmc.core.utils.TestUtils;
+import org.apache.commons.io.FileUtils;
 import org.junit.Rule;
 import org.junit.rules.TemporaryFolder;
 import org.mockito.Mock;
@@ -106,7 +107,6 @@ public void testDownloadAndExtractSuccess() throws Exception {
         verifyNoMoreInteractions(factory);
 
         assertTrue(Files.exists(arithFuncsTempDir));
-        // TODO: check for contents?
     }
 
     @Test
@@ -120,7 +120,6 @@ public void testDownloadAndExtractFailure() throws Exception {
 
         verifyNoMoreInteractions(factory);
 
-        // TODO: check for contents?
     }
 
     private void setUpMocks() throws Exception {
@@ -149,15 +148,19 @@ public void testDownloadAndExtractSuccessWithRealZip() throws Exception {
         TmcServerCommunicationTaskFactory realFactory = new TmcServerCommunicationTaskFactory();
         assertNotNull(TmcSettingsHolder.get());
         command = new DownloadAdaptiveExercise(mockObserver, realFactory);
+        Path testPath = Paths.get(System.getProperty("user.dir"));
 
-        when(settings.getTmcProjectDirectory()).thenReturn(Paths.get(System.getProperty("user.dir")));
+        when(settings.getTmcProjectDirectory()).thenReturn(testPath);
 
         Exercise exercise = command.call();
 
-        verifyNoMoreInteractions(factory);
+        if (exercise == null) {
+            assertFalse(Files.exists(testPath.resolve("porsk!")));
+            return;
+        }
+
+        assertTrue(Files.exists(testPath.resolve("porsk!")));
+        FileUtils.deleteDirectory(testPath.resolve("porsk!").toFile());
 
-        assertTrue(Files.exists(Paths.get(System.getProperty("user.dir"))));
-        Files.deleteIfExists(Paths.get(System.getProperty("user.dir")).resolve("porsk!"));
-        // TODO: check for contents?
     }
 }

From 88cd1e0b66748fe5fd3b7cf595c3c2e1e72979e4 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Fri, 19 May 2017 12:46:08 +0300
Subject: [PATCH 056/113] checkstylea

---
 .../DownloadAdaptiveExerciseTest.java         | 67 +++++++++----------
 1 file changed, 31 insertions(+), 36 deletions(-)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index 1a0c8ec6..0f7055e6 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -6,26 +6,17 @@
  * and open the template in the editor.
  */
 
-import fi.helsinki.cs.tmc.core.utils.TestUtils;
-import org.apache.commons.io.FileUtils;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.mockito.Spy;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.List;
-import java.util.concurrent.Callable;
-
-import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doCallRealMethod;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
 
-import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
-import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
-import com.google.common.collect.Lists;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
@@ -34,23 +25,28 @@
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utils.MockSettings;
+import fi.helsinki.cs.tmc.core.utils.TestUtils;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutorImpl;
 
-import java.net.URI;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
+import org.apache.commons.io.FileUtils;
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.concurrent.Callable;
 
 /**
- * @author fogh
+ * @author fogh.
  */
 public class DownloadAdaptiveExerciseTest {
 
@@ -91,7 +87,6 @@ public void setUp() throws IOException {
     @Test
     public void checkExerciseZipUrl() throws Exception {
         setUpMocks();
-        DownloadAdaptiveExercise e = new DownloadAdaptiveExercise(mockObserver);
         Exercise exercise = command.call();
     }
 
@@ -132,14 +127,14 @@ private void setUpMocks() throws Exception {
         when(settings.getTmcProjectDirectory()).thenReturn(testFolder.getRoot().toPath());
 
         when(factory.getDownloadingExerciseZipTask(mockExerciseOne))
-            .thenReturn(
-                new Callable<byte[]>() {
-                    @Override
-                    public byte[] call() throws Exception {
-                        return Files.readAllBytes(
-                            TestUtils.getZip(this.getClass(), "arith_funcs.zip"));
-                    }
-                });
+                .thenReturn(
+                        new Callable<byte[]>() {
+                            @Override
+                            public byte[] call() throws Exception {
+                                return Files.readAllBytes(
+                                        TestUtils.getZip(this.getClass(), "arith_funcs.zip"));
+                            }
+                        });
     }
 
     @Test

From 7cf0718167047e02bd4558a38fd592155e4459b9 Mon Sep 17 00:00:00 2001
From: fogre <antti.kotiranta@helsinki.fi>
Date: Fri, 19 May 2017 16:38:20 +0300
Subject: [PATCH 057/113] =?UTF-8?q?checkmystyle=20hyv=C3=A4ksyy?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../commands/DownloadAdaptiveExercise.java    | 28 +++++++------------
 .../serialization/AdaptiveExerciseParser.java | 23 +++++++--------
 .../DownloadAdaptiveExerciseTest.java         | 12 ++------
 .../AdaptiveExerciseParserTest.java           | 15 ++++------
 4 files changed, 27 insertions(+), 51 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 78ce4aec..42da0c8d 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -1,24 +1,19 @@
 /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
+ * Author: Ohtu Summer devs 2017
  */
+
 package fi.helsinki.cs.tmc.core.commands;
 
-import com.google.common.annotations.VisibleForTesting;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.Progress;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 
+
+import com.google.common.annotations.VisibleForTesting;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.List;
-
-/**
- * @author sakuolin
- */
 public class DownloadAdaptiveExercise extends ExerciseDownloadingCommand<Exercise> {
 
     private static final Logger logger = LoggerFactory.getLogger(SendFeedback.class);
@@ -28,28 +23,25 @@ public DownloadAdaptiveExercise(ProgressObserver observer) {
     }
 
     @VisibleForTesting
-    DownloadAdaptiveExercise(
-        ProgressObserver observer,
-        TmcServerCommunicationTaskFactory tmcServerCommunicationTaskFactory) {
+    DownloadAdaptiveExercise(ProgressObserver observer, TmcServerCommunicationTaskFactory tmcServerCommunicationTaskFactory) {
         super(observer, tmcServerCommunicationTaskFactory);
     }
 
     @Override
     public Exercise call() throws Exception {
-        Progress progress = new Progress(3);
         logger.info("Checking adaptive exercises availability");
-        //informObserver
-        Exercise exercise =
-            tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
+        //informObserver("MOI");
+        Exercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
         if (exercise == null) {
             return null;
         }
-        exercise.setName("ass!");
-        exercise.setCourseName("porsk!");
+        exercise.setName("AdaLovelace");
+        exercise.setCourseName("None");
         //Tallennuspolku riippuu edellämainituista nimistä, polku: maindirectory/courseName/exerciseName
         byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
         System.out.println(zipb.length);
         //checkInterrupt();
+        Progress progress = new Progress(3);
         extractProject(zipb, exercise, progress);
         return exercise;
     }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index fc5f367f..03e421f8 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -1,22 +1,18 @@
 /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
+ * Author: Ohtu project summer devs 2017
  */
+
 package fi.helsinki.cs.tmc.core.communication.serialization;
 
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 
-import java.net.URI;
-
 import org.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- *
- * @author sakuolin
- */
+import java.net.URI;
+
+
 public class AdaptiveExerciseParser {
     
     private static final Logger logger = LoggerFactory.getLogger(AdaptiveExerciseParser.class);
@@ -32,15 +28,16 @@ public Exercise parseFromJson(String json) {
             JSONObject obj = new JSONObject(json);
             if (obj.getBoolean("available")) {                
                 Exercise exercise = new Exercise();
-                exercise.setDownloadUrl
-                    // localhost, where is Skillifier hosted?
-                    (URI.create("http://localhost:3200" + obj.getString("zip_url")));
+                // localhost, where is Skillifier hosted?
+                exercise.setDownloadUrl(URI.create("http://localhost:3200"
+                           + obj.getString("zip_url")));
                 return exercise;
             }
             return null;
         } catch (RuntimeException ex) {
             logger.warn("Failed to parse an adaptive course from URL", ex);
-            throw new RuntimeException("Failed to parse an adaptive course from URL: " + ex.getMessage(), ex);
+            throw new RuntimeException("Failed to parse an adaptive course from URL: " 
+                    + ex.getMessage(), ex);
         }    
     }
     
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index 0f7055e6..beaedc44 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -6,7 +6,6 @@
  * and open the template in the editor.
  */
 
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
@@ -148,14 +147,7 @@ public void testDownloadAndExtractSuccessWithRealZip() throws Exception {
         when(settings.getTmcProjectDirectory()).thenReturn(testPath);
 
         Exercise exercise = command.call();
-
-        if (exercise == null) {
-            assertFalse(Files.exists(testPath.resolve("porsk!")));
-            return;
-        }
-
-        assertTrue(Files.exists(testPath.resolve("porsk!")));
-        FileUtils.deleteDirectory(testPath.resolve("porsk!").toFile());
-
+        assertTrue(Files.exists(testPath.resolve(exercise.getCourseName())));
+        FileUtils.deleteDirectory(testPath.resolve(exercise.getCourseName()).toFile());
     }
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index 0073eaca..e4d3cf2f 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -1,24 +1,19 @@
 /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
+ * Author: Ohtu project summer devs 2017
  */
+
 package fi.helsinki.cs.tmc.core.communication.http.serialization;
 
+import static org.junit.Assert.assertEquals;
+
 import fi.helsinki.cs.tmc.core.communication.serialization.AdaptiveExerciseParser;
-import fi.helsinki.cs.tmc.core.domain.Exercise;
 
 import fi.helsinki.cs.tmc.core.domain.Exercise;
+
 import org.junit.Before;
 import org.junit.Test;
 
-import java.net.URI;
-
-import static org.junit.Assert.*;
 
-/**
- * @author sakuolin
- */
 public class AdaptiveExerciseParserTest {
 
     private AdaptiveExerciseParser adaptiveParser;

From bdc3263ae7b077aa13876eecbb363f80b1cac948 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio@helsinki.fi>
Date: Sun, 21 May 2017 15:56:59 +0300
Subject: [PATCH 058/113] heroku address

---
 .../core/communication/TmcServerCommunicationTaskFactory.java   | 2 +-
 .../communication/serialization/AdaptiveExerciseParser.java     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 6da77e9c..9bddb782 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -159,7 +159,7 @@ public Exercise call() throws Exception {
                     //Testit menee lävitse generaattorilla luodulla json tiedostolla.
                     //Seuraavaksi pitäisi ajaa skillifier lokaalisesti ja tarkistaa että metodi toimii next.jsonilla
                     Callable<String> download = new HttpTasks().
-                                        getForText(URI.create("http://localhost:3200/next.json"));
+                                        getForText(URI.create("http://ohtu-skillifier.herokuapp.com/next.json"));
                     String json = download.call();
                     return adaptiveExerciseParser.parseFromJson(json);
                 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 03e421f8..842e4052 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -29,7 +29,7 @@ public Exercise parseFromJson(String json) {
             if (obj.getBoolean("available")) {                
                 Exercise exercise = new Exercise();
                 // localhost, where is Skillifier hosted?
-                exercise.setDownloadUrl(URI.create("http://localhost:3200"
+                exercise.setDownloadUrl(URI.create("http://ohtu-skillifier.herokuapp.com"
                            + obj.getString("zip_url")));
                 return exercise;
             }

From f53c9c86cbc0861d0d0c4ae39bd74fe8d9828f94 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Mon, 22 May 2017 15:46:01 +0300
Subject: [PATCH 059/113] began implementing adaptive submit to core

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |   6 ++
 .../SubmitAdaptiveExerciseToSkillifier.java   | 102 ++++++++++++++++++
 .../TmcServerCommunicationTaskFactory.java    |  45 ++++++++
 3 files changed, 153 insertions(+)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index e3fa73a3..b65ec576 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -19,6 +19,7 @@
 import fi.helsinki.cs.tmc.core.commands.SendFeedback;
 import fi.helsinki.cs.tmc.core.commands.SendSpywareEvents;
 import fi.helsinki.cs.tmc.core.commands.Submit;
+import fi.helsinki.cs.tmc.core.commands.SubmitAdaptiveExerciseToSkillifier;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
@@ -180,6 +181,11 @@ public Callable<Exercise> downloadAdaptiveExercise(ProgressObserver observer) {
         logger.info("Creating new DownloadAdaptiveExercise command");
         return new ExceptionTrackingCallable<>(new DownloadAdaptiveExercise(observer));
     }
+
+    public Callable<SubmissionResult> submitAdaptiveExerciseToSkillifier(ProgressObserver observer, Exercise exercise) {
+        logger.info("Creating new submitAdaptiveExerciseToSkillifier command");
+        return new ExceptionTrackingCallable<SubmissionResult>(new SubmitAdaptiveExerciseToSkillifier(observer, exercise));
+    }
     
     /**
      * NOT IMPLEMENTED!
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
new file mode 100644
index 00000000..dd768664
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -0,0 +1,102 @@
+package fi.helsinki.cs.tmc.core.commands;
+
+import com.google.common.annotations.VisibleForTesting;
+import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.domain.Exercise;
+import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
+import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
+import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
+import fi.helsinki.cs.tmc.core.exceptions.TmcInterruptionException;
+import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.langs.domain.NoLanguagePluginFoundException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.HashMap;
+import java.util.concurrent.Callable;
+
+/**
+ * Created by markovai on 22.5.2017.
+ */
+public class SubmitAdaptiveExerciseToSkillifier extends AbstractSubmissionCommand<SubmissionResult> {
+    private static final Logger logger = LoggerFactory.getLogger(AbstractSubmissionCommand.class);
+    private static final int DEFAULT_POLL_INTERVAL = 1000 * 2;
+
+    private Exercise exercise;
+
+    public SubmitAdaptiveExerciseToSkillifier(ProgressObserver observer, Exercise exercise) {
+        super(observer);
+        this.exercise = exercise;
+    }
+
+    @VisibleForTesting
+    SubmitAdaptiveExerciseToSkillifier(
+        ProgressObserver observer,
+        Exercise exercise,
+        TmcServerCommunicationTaskFactory tmcServerCommunicationTaskFactory) {
+        super(observer, tmcServerCommunicationTaskFactory);
+        this.exercise = exercise;
+    }
+
+
+    @Override
+    public SubmissionResult call() throws Exception {
+        logger.info("Submitting exercise {}", exercise.getName());
+        informObserver(0, "Submitting exercise to server");
+
+        TmcServerCommunicationTaskFactory.SubmissionResponse submissionResponse =
+            submitToSkillifier(exercise, new HashMap<String, String>());
+        return null;
+    }
+
+    private TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
+            Exercise exercise, HashMap<String, String> extraParams) throws TmcCoreException {
+
+        byte[] zippedProject;
+
+        informObserver(0, "Zipping project.");
+        Path tmcRoot = TmcSettingsHolder.get().getTmcProjectDirectory();
+        Path projectPath = exercise.getExerciseDirectory(tmcRoot);
+
+        //tarkista serveri riippuvaisuus
+        checkInterrupt();
+        logger.info("Submitting adaptive project to path {}", projectPath);
+
+        try {
+            zippedProject = TmcLangsHolder.get().compressProject(projectPath);
+        } catch (IOException | NoLanguagePluginFoundException ex) {
+            informObserver(1, "Failed to compress adaptive project");
+            logger.warn("Failed to compress adaptive project", ex);
+            throw new TmcCoreException("Failed to compress adaptive project", ex);
+        }
+
+        extraParams.put("error_msg_locale", TmcSettingsHolder.get().getLocale().toString());
+
+        checkInterrupt();
+        informObserver(0.5, "Submitting adaptive project");
+        logger.info("Submitting adaptive project to skillifier");
+
+        try {
+            TmcServerCommunicationTaskFactory.SubmissionResponse response
+                = tmcServerCommunicationTaskFactory
+                .getSubmittingExerciseTask(exercise, zippedProject, extraParams)
+                .call();
+
+            informObserver(1, "Submission successfully completed");
+            logger.info("Submission successfully completed");
+
+            return response;
+        } catch (Exception ex) {
+            if (ex instanceof NotLoggedInException) {
+                throw (NotLoggedInException)ex;
+            }
+            informObserver(1, "Failed to submit exercise");
+            logger.warn("Failed to submit exercise", ex);
+            throw new TmcCoreException("Failed to submit exercise", ex);
+        }
+    }
+}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 9bddb782..8c2155ff 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -238,6 +238,51 @@ public Callable<byte[]> getDownloadingExerciseSolutionZipTask(Exercise exercise)
         return new HttpTasks().getForBinary(zipUrl);
     }
 
+    public Callable<SubmissionResponse> getSubittingExerciseToSkillifierTask(
+        final Exercise exercise, final byte[] sourceZip, Map<String, String> extraParams) {
+
+        final Map<String, String> params = new LinkedHashMap<>();
+        params.put("client_time", "" + (System.currentTimeMillis() / 1000L));
+        params.put("client_nanotime", "" + System.nanoTime());
+        params.putAll(extraParams);
+
+        return wrapWithNotLoggedInException(new Callable<SubmissionResponse>() {
+            @Override
+            public SubmissionResponse call() throws Exception {
+                String response;
+                try {
+                    URI submitUrl = URI.create("");
+                    //final URI submitUrl = addApiCallQueryParameters(exercise.getReturnUrl());
+                    final Callable<String> upload = new HttpTasks()
+                        .uploadFileForTextDownload(submitUrl, params,
+                            "submission[file]", sourceZip);
+                    response = upload.call();
+                } catch (FailedHttpResponseException ex) {
+                    return checkForObsoleteClient(ex);
+                }
+
+                JsonObject respJson = new JsonParser().parse(response).getAsJsonObject();
+                if (respJson.get("error") != null) {
+                    throw new RuntimeException(
+                        "Server responded with error: " + respJson.get("error"));
+                } else if (respJson.get("submission_url") != null) {
+                    try {
+                        URI submissionUrl = new URI(respJson.get("submission_url").getAsString());
+                        URI pasteUrl = new URI(respJson.get("paste_url").getAsString());
+                        return new SubmissionResponse(submissionUrl, pasteUrl);
+                    } catch (Exception e) {
+                        throw new RuntimeException(
+                            "Server responded with malformed " + "submission url");
+                    }
+                } else {
+                    throw new RuntimeException("Server returned unknown response");
+                }
+            }
+
+            //TODO: Cancellable?
+        });
+    }
+
     public Callable<SubmissionResponse> getSubmittingExerciseTask(
             final Exercise exercise, final byte[] sourceZip, Map<String, String> extraParams) {
 

From 650b8fcc8dba0a89df6b151d129cb2fead9babae Mon Sep 17 00:00:00 2001
From: Qianyue Jin <jinzilailai@gmail.com>
Date: Mon, 22 May 2017 15:55:39 +0300
Subject: [PATCH 060/113] function name fix

---
 src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java              | 2 +-
 .../tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java   | 2 +-
 .../core/communication/TmcServerCommunicationTaskFactory.java   | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index b65ec576..3bcc40c2 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -184,7 +184,7 @@ public Callable<Exercise> downloadAdaptiveExercise(ProgressObserver observer) {
 
     public Callable<SubmissionResult> submitAdaptiveExerciseToSkillifier(ProgressObserver observer, Exercise exercise) {
         logger.info("Creating new submitAdaptiveExerciseToSkillifier command");
-        return new ExceptionTrackingCallable<SubmissionResult>(new SubmitAdaptiveExerciseToSkillifier(observer, exercise));
+        return new ExceptionTrackingCallable<>(new SubmitAdaptiveExerciseToSkillifier(observer, exercise));
     }
     
     /**
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index dd768664..6b512f54 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -83,7 +83,7 @@ private TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
         try {
             TmcServerCommunicationTaskFactory.SubmissionResponse response
                 = tmcServerCommunicationTaskFactory
-                .getSubmittingExerciseTask(exercise, zippedProject, extraParams)
+                .getSubmittingExerciseToSkillifierTask(exercise, zippedProject, extraParams)
                 .call();
 
             informObserver(1, "Submission successfully completed");
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 8c2155ff..8adbdd89 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -238,7 +238,7 @@ public Callable<byte[]> getDownloadingExerciseSolutionZipTask(Exercise exercise)
         return new HttpTasks().getForBinary(zipUrl);
     }
 
-    public Callable<SubmissionResponse> getSubittingExerciseToSkillifierTask(
+    public Callable<SubmissionResponse> getSubmittingExerciseToSkillifierTask(
         final Exercise exercise, final byte[] sourceZip, Map<String, String> extraParams) {
 
         final Map<String, String> params = new LinkedHashMap<>();

From 7af7e1e9860ce6285f42c5dbe84410722127f65f Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Mon, 22 May 2017 19:08:30 +0300
Subject: [PATCH 061/113] some notes

---
 .../core/commands/SubmitAdaptiveExerciseToSkillifier.java   | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index 6b512f54..1bb49c42 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -48,9 +48,15 @@ public SubmissionResult call() throws Exception {
         logger.info("Submitting exercise {}", exercise.getName());
         informObserver(0, "Submitting exercise to server");
 
+        //Compress project and upload to server
+        //Get SubmissionResponse from server, contains submissionURL and pasteURL
+        
         TmcServerCommunicationTaskFactory.SubmissionResponse submissionResponse =
             submitToSkillifier(exercise, new HashMap<String, String>());
         return null;
+
+        //Download JSON from submissionURL
+        // parse JSON into submissionResult
     }
 
     private TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(

From 561456eea56b8f2fea36e7d4dd7d5266bfb9b2a7 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Tue, 23 May 2017 10:28:52 +0300
Subject: [PATCH 062/113] pull request changes

---
 .../core/commands/DownloadAdaptiveExercise.java   |  9 +--------
 .../TmcServerCommunicationTaskFactory.java        | 15 ++++-----------
 2 files changed, 5 insertions(+), 19 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 42da0c8d..eddd5e35 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -1,7 +1,3 @@
-/*
- * Author: Ohtu Summer devs 2017
- */
-
 package fi.helsinki.cs.tmc.core.commands;
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
@@ -16,7 +12,7 @@
 
 public class DownloadAdaptiveExercise extends ExerciseDownloadingCommand<Exercise> {
 
-    private static final Logger logger = LoggerFactory.getLogger(SendFeedback.class);
+    private static final Logger logger = LoggerFactory.getLogger(DownloadAdaptiveExercise.class);
 
     public DownloadAdaptiveExercise(ProgressObserver observer) {
         super(observer);
@@ -30,16 +26,13 @@ public DownloadAdaptiveExercise(ProgressObserver observer) {
     @Override
     public Exercise call() throws Exception {
         logger.info("Checking adaptive exercises availability");
-        //informObserver("MOI");
         Exercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
         if (exercise == null) {
             return null;
         }
         exercise.setName("AdaLovelace");
         exercise.setCourseName("None");
-        //Tallennuspolku riippuu edellämainituista nimistä, polku: maindirectory/courseName/exerciseName
         byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
-        System.out.println(zipb.length);
         //checkInterrupt();
         Progress progress = new Progress(3);
         extractProject(zipb, exercise, progress);
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 8adbdd89..a265ecc1 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -1,7 +1,5 @@
 package fi.helsinki.cs.tmc.core.communication;
 
-import fi.helsinki.cs.tmc.core.commands.*;
-
 import fi.helsinki.cs.tmc.core.communication.http.HttpTasks;
 import fi.helsinki.cs.tmc.core.communication.http.UriUtils;
 import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
@@ -37,14 +35,9 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.net.URI;
-import java.net.URL;
 import java.nio.charset.Charset;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -63,6 +56,7 @@ public class TmcServerCommunicationTaskFactory {
     private static final Logger LOG = Logger.getLogger(
             TmcServerCommunicationTaskFactory.class.getName());
     public static final int API_VERSION = 8;
+    private static final String SKILLIFIER_URL = "http://ohtu-skillifier.herokuapp.com/next.json";
 
     private TmcSettings settings;
     private Oauth oauth;
@@ -156,14 +150,13 @@ public Callable<Exercise> getAdaptiveExercise()
             @Override
             public Exercise call() throws Exception {
                 try {
-                    //Testit menee lävitse generaattorilla luodulla json tiedostolla.
-                    //Seuraavaksi pitäisi ajaa skillifier lokaalisesti ja tarkistaa että metodi toimii next.jsonilla
                     Callable<String> download = new HttpTasks().
-                                        getForText(URI.create("http://ohtu-skillifier.herokuapp.com/next.json"));
+                                        getForText(URI.create(SKILLIFIER_URL));
                     String json = download.call();
                     return adaptiveExerciseParser.parseFromJson(json);
                 }
                 catch (Exception ex) {
+                    LOG.log(Level.WARNING, "Downloading and parsing adaptive exercise URL failed.");
                     return null;
                 }
             }
@@ -232,7 +225,7 @@ public Callable<byte[]> getDownloadingExerciseZipTask(Exercise exercise) {
         URI zipUrl = exercise.getDownloadUrl();
         return new HttpTasks().getForBinary(zipUrl);
     }
-    
+
     public Callable<byte[]> getDownloadingExerciseSolutionZipTask(Exercise exercise) {
         URI zipUrl = exercise.getSolutionDownloadUrl();
         return new HttpTasks().getForBinary(zipUrl);

From e44d63221a381b20c324eb4006b111928c33a2e9 Mon Sep 17 00:00:00 2001
From: Piia <piia.hartikka@helsinki.fi>
Date: Tue, 23 May 2017 12:11:23 +0300
Subject: [PATCH 063/113] one character fix in TmcCommunicationTaskFactory

---
 .../core/communication/TmcServerCommunicationTaskFactory.java  | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 9bddb782..0ea541e1 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -134,7 +134,8 @@ private URI getCourseListUrl()
         throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
         String serverAddress = settings.getServerAddress();
         String url;
-        String urlLastPart = "api/v" + API_VERSION + "/core/org/" + settings.getOrganization() + "/courses.json";
+        // "/core/org/" => "/core/org"
+        String urlLastPart = "api/v" + API_VERSION + "/core/org" + settings.getOrganization() + "/courses.json";
         if (serverAddress.endsWith("/")) {
             url = serverAddress + urlLastPart;
         } else {

From ff8ca0c765178430b02e8266e16e59b6e50ac27b Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Tue, 23 May 2017 12:11:39 +0300
Subject: [PATCH 064/113] adaptiveSubmit fixes

---
 .../SubmitAdaptiveExerciseToSkillifier.java   | 63 ++++++++++++++++---
 1 file changed, 55 insertions(+), 8 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index 1bb49c42..185326b9 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -1,7 +1,11 @@
 package fi.helsinki.cs.tmc.core.commands;
 
 import com.google.common.annotations.VisibleForTesting;
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.communication.serialization.SubmissionResultParser;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
@@ -48,38 +52,81 @@ public SubmissionResult call() throws Exception {
         logger.info("Submitting exercise {}", exercise.getName());
         informObserver(0, "Submitting exercise to server");
 
-        //Compress project and upload to server
+        //Compress project and upload to server, (not yet)
         //Get SubmissionResponse from server, contains submissionURL and pasteURL
         
         TmcServerCommunicationTaskFactory.SubmissionResponse submissionResponse =
             submitToSkillifier(exercise, new HashMap<String, String>());
-        return null;
+
+        while (true) {
+            checkInterrupt();
+            try {
+                Thread.sleep(DEFAULT_POLL_INTERVAL);
+            } catch (InterruptedException ex) {
+                logger.debug("Interrupted while sleeping", ex);
+            }
+            try {
+                logger.debug("Checking if server is done processing submission");
+                Callable<String> submissionResultFetcher =
+                    tmcServerCommunicationTaskFactory.getSubmissionFetchTask(
+                        submissionResponse.submissionUrl);
+
+                String submissionStatus = submissionResultFetcher.call();
+                JsonElement submission = new JsonParser().parse(submissionStatus);
+                if (isProcessing(submission)) {
+                    logger.debug("Server not done, sleeping for {}", DEFAULT_POLL_INTERVAL);
+                    informObserver(0.3, "Waiting for response from server");
+                    // TODO: Replace with variable interval polling
+                    Thread.sleep(DEFAULT_POLL_INTERVAL);
+                } else {
+                    logger.debug("Server done, parsing results");
+                    informObserver(0.6, "Reading adaptive submission result");
+
+                    SubmissionResultParser resultParser = new SubmissionResultParser();
+                    SubmissionResult result = resultParser.parseFromJson(submissionStatus);
+
+                    logger.debug("Done parsing server response");
+                    informObserver(1, "Successfully read adaptive submission results");
+
+                    return result;
+                }
+            } catch (Exception ex) {
+                informObserver(1, "Error while waiting for response from server");
+                logger.warn("Error while updating adaptive submission status from server, continuing", ex);
+            }
+        }
 
         //Download JSON from submissionURL
         // parse JSON into submissionResult
     }
 
+    private boolean isProcessing(JsonElement submissionStatus) {
+        return submissionStatus.getAsJsonObject().get("status").getAsString().equals("processing");
+    }
+
     private TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
             Exercise exercise, HashMap<String, String> extraParams) throws TmcCoreException {
 
-        byte[] zippedProject;
+        Gson gson = new Gson();
+        String json = gson.toJson(exercise);
+
+        byte[] byteToSubmit = json.getBytes();
 
         informObserver(0, "Zipping project.");
         Path tmcRoot = TmcSettingsHolder.get().getTmcProjectDirectory();
         Path projectPath = exercise.getExerciseDirectory(tmcRoot);
 
-        //tarkista serveri riippuvaisuus
         checkInterrupt();
         logger.info("Submitting adaptive project to path {}", projectPath);
-
+/*
         try {
-            zippedProject = TmcLangsHolder.get().compressProject(projectPath);
+            byteToSubmit = TmcLangsHolder.get().compressProject(projectPath);
         } catch (IOException | NoLanguagePluginFoundException ex) {
             informObserver(1, "Failed to compress adaptive project");
             logger.warn("Failed to compress adaptive project", ex);
             throw new TmcCoreException("Failed to compress adaptive project", ex);
         }
-
+*/
         extraParams.put("error_msg_locale", TmcSettingsHolder.get().getLocale().toString());
 
         checkInterrupt();
@@ -89,7 +136,7 @@ private TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
         try {
             TmcServerCommunicationTaskFactory.SubmissionResponse response
                 = tmcServerCommunicationTaskFactory
-                .getSubmittingExerciseToSkillifierTask(exercise, zippedProject, extraParams)
+                .getSubmittingExerciseToSkillifierTask(exercise, byteToSubmit, extraParams)
                 .call();
 
             informObserver(1, "Submission successfully completed");

From 26bdb5854f3cd0b7b3d0046cdfd38c7b113f9357 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Tue, 23 May 2017 12:56:52 +0300
Subject: [PATCH 065/113] adaptive submit test

---
 .../SubmitAdaptiveExerciseToSkillifier.java   |  13 +-
 ...ubmitAdaptiveExerciseToSkillifierTest.java | 117 ++++++++++++++++++
 2 files changed, 127 insertions(+), 3 deletions(-)
 create mode 100644 src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index 185326b9..75d24427 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -108,16 +108,23 @@ private TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
             Exercise exercise, HashMap<String, String> extraParams) throws TmcCoreException {
 
         Gson gson = new Gson();
-        String json = gson.toJson(exercise);
+        String json = "";
+        try {
+            json = gson.toJson(exercise);
+        } catch (Exception e) {
+            System.out.println(e.toString());
+        }
+
 
         byte[] byteToSubmit = json.getBytes();
 
         informObserver(0, "Zipping project.");
+        /*
         Path tmcRoot = TmcSettingsHolder.get().getTmcProjectDirectory();
         Path projectPath = exercise.getExerciseDirectory(tmcRoot);
+        */
 
-        checkInterrupt();
-        logger.info("Submitting adaptive project to path {}", projectPath);
+        //logger.info("Submitting adaptive project to path {}", projectPath);
 /*
         try {
             byteToSubmit = TmcLangsHolder.get().compressProject(projectPath);
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
new file mode 100644
index 00000000..e49df831
--- /dev/null
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -0,0 +1,117 @@
+package fi.helsinki.cs.tmc.core.commands;
+
+import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.domain.Course;
+import fi.helsinki.cs.tmc.core.domain.Exercise;
+import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
+import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.utils.MockSettings;
+import fi.helsinki.cs.tmc.core.utils.TestUtils;
+import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
+import fi.helsinki.cs.tmc.langs.util.TaskExecutorImpl;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
+
+import java.net.URI;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Locale;
+import java.util.Map;
+import java.util.concurrent.Callable;
+
+import static org.junit.Assert.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
+
+/**
+ * Created by markovai on 23.5.2017.
+ */
+public class SubmitAdaptiveExerciseToSkillifierTest {
+    @Rule
+    public TemporaryFolder testFolder = new TemporaryFolder();
+
+    @Mock
+    ProgressObserver mockObserver;
+    @Spy
+    TmcSettings settings = new MockSettings();
+    @Mock
+    TmcServerCommunicationTaskFactory factory;
+    @Mock
+    Course mockCourse;
+    @Mock
+    Exercise mockExercise;
+
+    private static final URI PASTE_URI = URI.create("http://example.com/paste");
+    private static final URI SUBMISSION_URI = URI.create("http://example.com/submission");
+    private static final TmcServerCommunicationTaskFactory.SubmissionResponse STUB_RESPONSE =
+        new TmcServerCommunicationTaskFactory.SubmissionResponse(SUBMISSION_URI, PASTE_URI);
+
+    private static final String STUB_PROSESSING_RESPONSE = "{status: \"processing\"}";
+    private static final String STUB_PROSESSING_DONE_RESPONSE = "{status: \"OK\"}";
+
+    private Command<SubmissionResult> command;
+    private Path arithFuncsTempDir;
+    private TaskExecutor langs;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        TmcSettingsHolder.set(settings);
+        //when(settings.getTmcProjectDirectory()).thenReturn(Paths.get(System.getProperty("user.dir")));
+
+        langs = spy(new TaskExecutorImpl());
+        TmcLangsHolder.set(langs);
+        Exercise ex = new Exercise("name", "course");
+        command = new SubmitAdaptiveExerciseToSkillifier(mockObserver, ex, factory);
+
+        arithFuncsTempDir = TestUtils.getProject(this.getClass(), "arith_funcs");
+        when(mockExercise.getExerciseDirectory(any(Path.class))).thenReturn(arithFuncsTempDir);
+        when(settings.getLocale()).thenReturn(new Locale("FI"));
+    }
+
+    @Test(timeout = 10000)
+    public void testCall() throws Exception {
+        verifyZeroInteractions(mockObserver);
+        doReturn(new byte[0]).when(langs).compressProject(any(Path.class));
+        when(
+            factory.getSubmittingExerciseToSkillifierTask(
+                any(Exercise.class), any(byte[].class), any(Map.class)))
+            .thenReturn(
+                new Callable<TmcServerCommunicationTaskFactory.SubmissionResponse>() {
+                    @Override
+                    public TmcServerCommunicationTaskFactory.SubmissionResponse call() throws Exception {
+                        return STUB_RESPONSE;
+                    }
+                });
+        when(factory.getSubmissionFetchTask(any(URI.class)))
+            .thenReturn(
+                new Callable<String>() {
+                    @Override
+                    public String call() throws Exception {
+                        return STUB_PROSESSING_RESPONSE;
+                    }
+                })
+            .thenReturn(
+                new Callable<String>() {
+                    @Override
+                    public String call() throws Exception {
+                        return STUB_PROSESSING_DONE_RESPONSE;
+                    }
+                });
+
+        SubmissionResult result = command.call();
+        assertEquals(result.getStatus(), SubmissionResult.Status.OK);
+    }
+
+}

From d930025b916fea0c38050d27b3cafea42fd27120 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Tue, 23 May 2017 13:44:10 +0300
Subject: [PATCH 066/113] deleted some changes

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |   7 -
 .../SubmitAdaptiveExerciseToSkillifier.java   | 162 ------------------
 .../TmcServerCommunicationTaskFactory.java    |  45 -----
 ...ubmitAdaptiveExerciseToSkillifierTest.java | 117 -------------
 4 files changed, 331 deletions(-)
 delete mode 100644 src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
 delete mode 100644 src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 3bcc40c2..e6d00ac9 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -19,7 +19,6 @@
 import fi.helsinki.cs.tmc.core.commands.SendFeedback;
 import fi.helsinki.cs.tmc.core.commands.SendSpywareEvents;
 import fi.helsinki.cs.tmc.core.commands.Submit;
-import fi.helsinki.cs.tmc.core.commands.SubmitAdaptiveExerciseToSkillifier;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
@@ -40,7 +39,6 @@
 import fi.helsinki.cs.tmc.spyware.LoggableEvent;
 
 import com.google.common.annotations.Beta;
-import fi.helsinki.cs.tmc.core.commands.Command;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -181,11 +179,6 @@ public Callable<Exercise> downloadAdaptiveExercise(ProgressObserver observer) {
         logger.info("Creating new DownloadAdaptiveExercise command");
         return new ExceptionTrackingCallable<>(new DownloadAdaptiveExercise(observer));
     }
-
-    public Callable<SubmissionResult> submitAdaptiveExerciseToSkillifier(ProgressObserver observer, Exercise exercise) {
-        logger.info("Creating new submitAdaptiveExerciseToSkillifier command");
-        return new ExceptionTrackingCallable<>(new SubmitAdaptiveExerciseToSkillifier(observer, exercise));
-    }
     
     /**
      * NOT IMPLEMENTED!
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
deleted file mode 100644
index 75d24427..00000000
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ /dev/null
@@ -1,162 +0,0 @@
-package fi.helsinki.cs.tmc.core.commands;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParser;
-import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
-import fi.helsinki.cs.tmc.core.communication.serialization.SubmissionResultParser;
-import fi.helsinki.cs.tmc.core.domain.Exercise;
-import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
-import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
-import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
-import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
-import fi.helsinki.cs.tmc.core.exceptions.TmcInterruptionException;
-import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
-import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
-import fi.helsinki.cs.tmc.langs.domain.NoLanguagePluginFoundException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.nio.file.Path;
-import java.util.HashMap;
-import java.util.concurrent.Callable;
-
-/**
- * Created by markovai on 22.5.2017.
- */
-public class SubmitAdaptiveExerciseToSkillifier extends AbstractSubmissionCommand<SubmissionResult> {
-    private static final Logger logger = LoggerFactory.getLogger(AbstractSubmissionCommand.class);
-    private static final int DEFAULT_POLL_INTERVAL = 1000 * 2;
-
-    private Exercise exercise;
-
-    public SubmitAdaptiveExerciseToSkillifier(ProgressObserver observer, Exercise exercise) {
-        super(observer);
-        this.exercise = exercise;
-    }
-
-    @VisibleForTesting
-    SubmitAdaptiveExerciseToSkillifier(
-        ProgressObserver observer,
-        Exercise exercise,
-        TmcServerCommunicationTaskFactory tmcServerCommunicationTaskFactory) {
-        super(observer, tmcServerCommunicationTaskFactory);
-        this.exercise = exercise;
-    }
-
-
-    @Override
-    public SubmissionResult call() throws Exception {
-        logger.info("Submitting exercise {}", exercise.getName());
-        informObserver(0, "Submitting exercise to server");
-
-        //Compress project and upload to server, (not yet)
-        //Get SubmissionResponse from server, contains submissionURL and pasteURL
-        
-        TmcServerCommunicationTaskFactory.SubmissionResponse submissionResponse =
-            submitToSkillifier(exercise, new HashMap<String, String>());
-
-        while (true) {
-            checkInterrupt();
-            try {
-                Thread.sleep(DEFAULT_POLL_INTERVAL);
-            } catch (InterruptedException ex) {
-                logger.debug("Interrupted while sleeping", ex);
-            }
-            try {
-                logger.debug("Checking if server is done processing submission");
-                Callable<String> submissionResultFetcher =
-                    tmcServerCommunicationTaskFactory.getSubmissionFetchTask(
-                        submissionResponse.submissionUrl);
-
-                String submissionStatus = submissionResultFetcher.call();
-                JsonElement submission = new JsonParser().parse(submissionStatus);
-                if (isProcessing(submission)) {
-                    logger.debug("Server not done, sleeping for {}", DEFAULT_POLL_INTERVAL);
-                    informObserver(0.3, "Waiting for response from server");
-                    // TODO: Replace with variable interval polling
-                    Thread.sleep(DEFAULT_POLL_INTERVAL);
-                } else {
-                    logger.debug("Server done, parsing results");
-                    informObserver(0.6, "Reading adaptive submission result");
-
-                    SubmissionResultParser resultParser = new SubmissionResultParser();
-                    SubmissionResult result = resultParser.parseFromJson(submissionStatus);
-
-                    logger.debug("Done parsing server response");
-                    informObserver(1, "Successfully read adaptive submission results");
-
-                    return result;
-                }
-            } catch (Exception ex) {
-                informObserver(1, "Error while waiting for response from server");
-                logger.warn("Error while updating adaptive submission status from server, continuing", ex);
-            }
-        }
-
-        //Download JSON from submissionURL
-        // parse JSON into submissionResult
-    }
-
-    private boolean isProcessing(JsonElement submissionStatus) {
-        return submissionStatus.getAsJsonObject().get("status").getAsString().equals("processing");
-    }
-
-    private TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
-            Exercise exercise, HashMap<String, String> extraParams) throws TmcCoreException {
-
-        Gson gson = new Gson();
-        String json = "";
-        try {
-            json = gson.toJson(exercise);
-        } catch (Exception e) {
-            System.out.println(e.toString());
-        }
-
-
-        byte[] byteToSubmit = json.getBytes();
-
-        informObserver(0, "Zipping project.");
-        /*
-        Path tmcRoot = TmcSettingsHolder.get().getTmcProjectDirectory();
-        Path projectPath = exercise.getExerciseDirectory(tmcRoot);
-        */
-
-        //logger.info("Submitting adaptive project to path {}", projectPath);
-/*
-        try {
-            byteToSubmit = TmcLangsHolder.get().compressProject(projectPath);
-        } catch (IOException | NoLanguagePluginFoundException ex) {
-            informObserver(1, "Failed to compress adaptive project");
-            logger.warn("Failed to compress adaptive project", ex);
-            throw new TmcCoreException("Failed to compress adaptive project", ex);
-        }
-*/
-        extraParams.put("error_msg_locale", TmcSettingsHolder.get().getLocale().toString());
-
-        checkInterrupt();
-        informObserver(0.5, "Submitting adaptive project");
-        logger.info("Submitting adaptive project to skillifier");
-
-        try {
-            TmcServerCommunicationTaskFactory.SubmissionResponse response
-                = tmcServerCommunicationTaskFactory
-                .getSubmittingExerciseToSkillifierTask(exercise, byteToSubmit, extraParams)
-                .call();
-
-            informObserver(1, "Submission successfully completed");
-            logger.info("Submission successfully completed");
-
-            return response;
-        } catch (Exception ex) {
-            if (ex instanceof NotLoggedInException) {
-                throw (NotLoggedInException)ex;
-            }
-            informObserver(1, "Failed to submit exercise");
-            logger.warn("Failed to submit exercise", ex);
-            throw new TmcCoreException("Failed to submit exercise", ex);
-        }
-    }
-}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 8b7f31af..39fd19d4 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -232,51 +232,6 @@ public Callable<byte[]> getDownloadingExerciseSolutionZipTask(Exercise exercise)
         return new HttpTasks().getForBinary(zipUrl);
     }
 
-    public Callable<SubmissionResponse> getSubmittingExerciseToSkillifierTask(
-        final Exercise exercise, final byte[] sourceZip, Map<String, String> extraParams) {
-
-        final Map<String, String> params = new LinkedHashMap<>();
-        params.put("client_time", "" + (System.currentTimeMillis() / 1000L));
-        params.put("client_nanotime", "" + System.nanoTime());
-        params.putAll(extraParams);
-
-        return wrapWithNotLoggedInException(new Callable<SubmissionResponse>() {
-            @Override
-            public SubmissionResponse call() throws Exception {
-                String response;
-                try {
-                    URI submitUrl = URI.create("");
-                    //final URI submitUrl = addApiCallQueryParameters(exercise.getReturnUrl());
-                    final Callable<String> upload = new HttpTasks()
-                        .uploadFileForTextDownload(submitUrl, params,
-                            "submission[file]", sourceZip);
-                    response = upload.call();
-                } catch (FailedHttpResponseException ex) {
-                    return checkForObsoleteClient(ex);
-                }
-
-                JsonObject respJson = new JsonParser().parse(response).getAsJsonObject();
-                if (respJson.get("error") != null) {
-                    throw new RuntimeException(
-                        "Server responded with error: " + respJson.get("error"));
-                } else if (respJson.get("submission_url") != null) {
-                    try {
-                        URI submissionUrl = new URI(respJson.get("submission_url").getAsString());
-                        URI pasteUrl = new URI(respJson.get("paste_url").getAsString());
-                        return new SubmissionResponse(submissionUrl, pasteUrl);
-                    } catch (Exception e) {
-                        throw new RuntimeException(
-                            "Server responded with malformed " + "submission url");
-                    }
-                } else {
-                    throw new RuntimeException("Server returned unknown response");
-                }
-            }
-
-            //TODO: Cancellable?
-        });
-    }
-
     public Callable<SubmissionResponse> getSubmittingExerciseTask(
             final Exercise exercise, final byte[] sourceZip, Map<String, String> extraParams) {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
deleted file mode 100644
index e49df831..00000000
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package fi.helsinki.cs.tmc.core.commands;
-
-import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
-import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
-import fi.helsinki.cs.tmc.core.domain.Course;
-import fi.helsinki.cs.tmc.core.domain.Exercise;
-import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
-import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
-import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
-import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
-import fi.helsinki.cs.tmc.core.utils.MockSettings;
-import fi.helsinki.cs.tmc.core.utils.TestUtils;
-import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
-import fi.helsinki.cs.tmc.langs.util.TaskExecutorImpl;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.mockito.Spy;
-
-import java.net.URI;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Locale;
-import java.util.Map;
-import java.util.concurrent.Callable;
-
-import static org.junit.Assert.*;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verifyZeroInteractions;
-import static org.mockito.Mockito.when;
-
-/**
- * Created by markovai on 23.5.2017.
- */
-public class SubmitAdaptiveExerciseToSkillifierTest {
-    @Rule
-    public TemporaryFolder testFolder = new TemporaryFolder();
-
-    @Mock
-    ProgressObserver mockObserver;
-    @Spy
-    TmcSettings settings = new MockSettings();
-    @Mock
-    TmcServerCommunicationTaskFactory factory;
-    @Mock
-    Course mockCourse;
-    @Mock
-    Exercise mockExercise;
-
-    private static final URI PASTE_URI = URI.create("http://example.com/paste");
-    private static final URI SUBMISSION_URI = URI.create("http://example.com/submission");
-    private static final TmcServerCommunicationTaskFactory.SubmissionResponse STUB_RESPONSE =
-        new TmcServerCommunicationTaskFactory.SubmissionResponse(SUBMISSION_URI, PASTE_URI);
-
-    private static final String STUB_PROSESSING_RESPONSE = "{status: \"processing\"}";
-    private static final String STUB_PROSESSING_DONE_RESPONSE = "{status: \"OK\"}";
-
-    private Command<SubmissionResult> command;
-    private Path arithFuncsTempDir;
-    private TaskExecutor langs;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        TmcSettingsHolder.set(settings);
-        //when(settings.getTmcProjectDirectory()).thenReturn(Paths.get(System.getProperty("user.dir")));
-
-        langs = spy(new TaskExecutorImpl());
-        TmcLangsHolder.set(langs);
-        Exercise ex = new Exercise("name", "course");
-        command = new SubmitAdaptiveExerciseToSkillifier(mockObserver, ex, factory);
-
-        arithFuncsTempDir = TestUtils.getProject(this.getClass(), "arith_funcs");
-        when(mockExercise.getExerciseDirectory(any(Path.class))).thenReturn(arithFuncsTempDir);
-        when(settings.getLocale()).thenReturn(new Locale("FI"));
-    }
-
-    @Test(timeout = 10000)
-    public void testCall() throws Exception {
-        verifyZeroInteractions(mockObserver);
-        doReturn(new byte[0]).when(langs).compressProject(any(Path.class));
-        when(
-            factory.getSubmittingExerciseToSkillifierTask(
-                any(Exercise.class), any(byte[].class), any(Map.class)))
-            .thenReturn(
-                new Callable<TmcServerCommunicationTaskFactory.SubmissionResponse>() {
-                    @Override
-                    public TmcServerCommunicationTaskFactory.SubmissionResponse call() throws Exception {
-                        return STUB_RESPONSE;
-                    }
-                });
-        when(factory.getSubmissionFetchTask(any(URI.class)))
-            .thenReturn(
-                new Callable<String>() {
-                    @Override
-                    public String call() throws Exception {
-                        return STUB_PROSESSING_RESPONSE;
-                    }
-                })
-            .thenReturn(
-                new Callable<String>() {
-                    @Override
-                    public String call() throws Exception {
-                        return STUB_PROSESSING_DONE_RESPONSE;
-                    }
-                });
-
-        SubmissionResult result = command.call();
-        assertEquals(result.getStatus(), SubmissionResult.Status.OK);
-    }
-
-}

From 1683cdbeb154c6e6b43283660545511826ccc143 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Tue, 23 May 2017 14:34:08 +0300
Subject: [PATCH 067/113] fixes

---
 .../core/commands/SubmitAdaptiveExerciseToSkillifierTest.java    | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index e49df831..959e6a5c 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -68,7 +68,6 @@ public class SubmitAdaptiveExerciseToSkillifierTest {
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         TmcSettingsHolder.set(settings);
-        //when(settings.getTmcProjectDirectory()).thenReturn(Paths.get(System.getProperty("user.dir")));
 
         langs = spy(new TaskExecutorImpl());
         TmcLangsHolder.set(langs);

From 4edee7e8d5a153aa221b50b8c64e4a8ba0bd8574 Mon Sep 17 00:00:00 2001
From: Ville Tanttu <ville.tanttu@cs.helsinki.fi>
Date: Tue, 23 May 2017 14:48:25 +0300
Subject: [PATCH 068/113] Pull request fix

---
 src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java    |  2 +-
 .../tmc/core/commands/DownloadOrUpdateExercises.java  |  2 +-
 .../tmc/core/commands/ExerciseDownloadingCommand.java |  6 +++---
 .../TmcServerCommunicationTaskFactory.java            |  8 +++-----
 .../core/communication/http/HttpRequestExecutor.java  |  2 +-
 .../serialization/AdaptiveExerciseParser.java         |  6 ------
 .../exceptions/ExerciseDownloadFailedException.java   |  3 +--
 ...on.java => ExtractingExerciseFailedException.java} |  7 ++++---
 .../fi/helsinki/cs/tmc/spyware/EventSendBuffer.java   |  2 --
 .../cs/tmc/core/commands/AuthenticateUserTest.java    |  3 ---
 .../core/commands/DownloadAdaptiveExerciseTest.java   |  9 ---------
 .../core/commands/DownloadOrUpdateExercisesTest.java  |  5 -----
 .../cs/tmc/core/commands/GetCourseDetailsTest.java    |  1 -
 .../cs/tmc/core/commands/GetOrganizationsTest.java    |  1 -
 .../tmc/core/commands/GetUpdatableExercisesTest.java  |  4 ----
 .../cs/tmc/core/commands/ListCoursesTest.java         |  1 -
 .../cs/tmc/core/commands/PasteWithCommentTest.java    |  2 --
 .../cs/tmc/core/commands/SendFeedbackTest.java        |  3 ---
 .../fi/helsinki/cs/tmc/core/commands/SubmitTest.java  |  2 --
 .../serialization/AdaptiveExerciseParserTest.java     | 11 -----------
 .../cs/tmc/core/spyware/EventSendBufferTest.java      |  6 ------
 21 files changed, 14 insertions(+), 72 deletions(-)
 rename src/main/java/fi/helsinki/cs/tmc/core/exceptions/{ExtractingExericeFailedException.java => ExtractingExerciseFailedException.java} (59%)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index e6d00ac9..b7ca30c8 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -1,10 +1,10 @@
 package fi.helsinki.cs.tmc.core;
 
 import fi.helsinki.cs.tmc.core.commands.AuthenticateUser;
+import fi.helsinki.cs.tmc.core.commands.DownloadAdaptiveExercise;
 import fi.helsinki.cs.tmc.core.commands.DownloadCompletedExercises;
 import fi.helsinki.cs.tmc.core.commands.DownloadModelSolution;
 import fi.helsinki.cs.tmc.core.commands.DownloadOrUpdateExercises;
-import fi.helsinki.cs.tmc.core.commands.DownloadAdaptiveExercise;
 import fi.helsinki.cs.tmc.core.commands.GetCourseDetails;
 import fi.helsinki.cs.tmc.core.commands.GetOrganizations;
 import fi.helsinki.cs.tmc.core.commands.GetUnreadReviews;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercises.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercises.java
index 4cf29ab8..54fcf367 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercises.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercises.java
@@ -5,7 +5,7 @@
 import fi.helsinki.cs.tmc.core.domain.Progress;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.exceptions.ExerciseDownloadFailedException;
-import fi.helsinki.cs.tmc.core.exceptions.ExtractingExericeFailedException;
+import fi.helsinki.cs.tmc.core.exceptions.ExtractingExerciseFailedException;
 import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
 import fi.helsinki.cs.tmc.core.exceptions.TmcInterruptionException;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/ExerciseDownloadingCommand.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/ExerciseDownloadingCommand.java
index 0fcfeddc..967527ca 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/ExerciseDownloadingCommand.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/ExerciseDownloadingCommand.java
@@ -8,7 +8,7 @@
 import fi.helsinki.cs.tmc.core.domain.Progress;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.exceptions.ExerciseDownloadFailedException;
-import fi.helsinki.cs.tmc.core.exceptions.ExtractingExericeFailedException;
+import fi.helsinki.cs.tmc.core.exceptions.ExtractingExerciseFailedException;
 import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
 import fi.helsinki.cs.tmc.core.exceptions.TmcInterruptionException;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
@@ -75,7 +75,7 @@ protected void extractSolution(byte[] zip, Exercise exercise, Progress progress)
                         + " to "
                         + target,
                     ex);
-            throw new ExtractingExericeFailedException(exercise, ex);
+            throw new ExtractingExerciseFailedException(exercise, ex);
         } finally {
             cleanUp(exerciseZipTemporaryPath);
         }
@@ -117,7 +117,7 @@ protected void extractProject(byte[] zip, Exercise exercise, Progress progress)
                         + " to "
                         + target,
                     ex);
-            throw new ExtractingExericeFailedException(exercise, ex);
+            throw new ExtractingExerciseFailedException(exercise, ex);
         } finally {
             cleanUp(exerciseZipTemporaryPath);
         }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 39fd19d4..a4fd2806 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -151,19 +151,17 @@ public Callable<Exercise> getAdaptiveExercise()
             @Override
             public Exercise call() throws Exception {
                 try {
-                    Callable<String> download = new HttpTasks().
-                                        getForText(URI.create(SKILLIFIER_URL));
+                    Callable<String> download = new HttpTasks()
+                                        .getForText(URI.create(SKILLIFIER_URL));
                     String json = download.call();
                     return adaptiveExerciseParser.parseFromJson(json);
-                }
-                catch (Exception ex) {
+                } catch (Exception ex) {
                     LOG.log(Level.WARNING, "Downloading and parsing adaptive exercise URL failed.");
                     return null;
                 }
             }
         });
     }
-    
 
     public Callable<List<Course>> getDownloadingCourseListTask() {
         return wrapWithNotLoggedInException(new Callable<List<Course>>() {
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpRequestExecutor.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpRequestExecutor.java
index f8877cc0..c5287e09 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpRequestExecutor.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpRequestExecutor.java
@@ -47,7 +47,7 @@
     private final Object shutdownLock = new Object();
 
     private int timeout = DEFAULT_TIMEOUT;
-    public HttpUriRequest request;
+    private HttpUriRequest request;
     private UsernamePasswordCredentials credentials; // May be null
 
     /*package*/ HttpRequestExecutor(URI url) {
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 842e4052..707b0ef5 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -1,7 +1,3 @@
-/*
- * Author: Ohtu project summer devs 2017
- */
-
 package fi.helsinki.cs.tmc.core.communication.serialization;
 
 import fi.helsinki.cs.tmc.core.domain.Exercise;
@@ -12,7 +8,6 @@
 
 import java.net.URI;
 
-
 public class AdaptiveExerciseParser {
     
     private static final Logger logger = LoggerFactory.getLogger(AdaptiveExerciseParser.class);
@@ -28,7 +23,6 @@ public Exercise parseFromJson(String json) {
             JSONObject obj = new JSONObject(json);
             if (obj.getBoolean("available")) {                
                 Exercise exercise = new Exercise();
-                // localhost, where is Skillifier hosted?
                 exercise.setDownloadUrl(URI.create("http://ohtu-skillifier.herokuapp.com"
                            + obj.getString("zip_url")));
                 return exercise;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExerciseDownloadFailedException.java b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExerciseDownloadFailedException.java
index 0e8fe71d..0d5f01db 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExerciseDownloadFailedException.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExerciseDownloadFailedException.java
@@ -2,7 +2,6 @@
 
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 
-import java.io.IOException;
 import java.net.URI;
 
 public class ExerciseDownloadFailedException extends TmcCoreException {
@@ -11,7 +10,7 @@ public ExerciseDownloadFailedException(Exercise exercise, Exception ex) {
         super("Downloading exercise " + exercise.getName() + " failed", ex);
     }
     
-    public ExerciseDownloadFailedException(URI url, Exception ex){
+    public ExerciseDownloadFailedException(URI url, Exception ex) {
         super("Write exercise zip to disk from " + url.toString() + " failed", ex);
     }
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExtractingExericeFailedException.java b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExtractingExerciseFailedException.java
similarity index 59%
rename from src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExtractingExericeFailedException.java
rename to src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExtractingExerciseFailedException.java
index 98364294..acc08944 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExtractingExericeFailedException.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExtractingExerciseFailedException.java
@@ -1,15 +1,16 @@
 package fi.helsinki.cs.tmc.core.exceptions;
 
 import fi.helsinki.cs.tmc.core.domain.Exercise;
+
 import java.net.URI;
 
-public class ExtractingExericeFailedException extends TmcCoreException {
-    public ExtractingExericeFailedException(Exercise exercise, Exception ex) {
+public class ExtractingExerciseFailedException extends TmcCoreException {
+    public ExtractingExerciseFailedException(Exercise exercise, Exception ex) {
         super("Extracting zip for " + exercise.getName() + " failed", ex);
     }
     
     // extract exercise when name is unknown, 
-    public ExtractingExericeFailedException(URI url, Exception ex) {
+    public ExtractingExerciseFailedException(URI url, Exception ex) {
         super("Extracting zip from " + url.toString() + " failed", ex);
     }
     
diff --git a/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java b/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java
index af54ca2b..ba8b7f37 100644
--- a/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java
+++ b/src/main/java/fi/helsinki/cs/tmc/spyware/EventSendBuffer.java
@@ -4,7 +4,6 @@
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.domain.Course;
-import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utilities.Cooldown;
 import fi.helsinki.cs.tmc.core.utilities.SingletonTask;
@@ -25,7 +24,6 @@
 import java.util.concurrent.TimeoutException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import static com.google.common.base.Preconditions.checkArgument;
 
 /**
  * Buffers {@link LoggableEvent}s and sends them to the server and/or syncs them to the disk
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
index c1e9f979..a16c58f8 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/AuthenticateUserTest.java
@@ -29,9 +29,6 @@
 import org.mockito.stubbing.Answer;
 
 import java.io.IOException;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.verify;
 
 public class AuthenticateUserTest {
     @Mock
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index beaedc44..a0ec62ff 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -1,11 +1,5 @@
 package fi.helsinki.cs.tmc.core.commands;
 
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
@@ -44,9 +38,6 @@
 import java.nio.file.Paths;
 import java.util.concurrent.Callable;
 
-/**
- * @author fogh.
- */
 public class DownloadAdaptiveExerciseTest {
 
     @Rule
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercisesTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercisesTest.java
index 26069fb7..cbe6c043 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercisesTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadOrUpdateExercisesTest.java
@@ -38,11 +38,6 @@
 import java.nio.file.Path;
 import java.util.List;
 import java.util.concurrent.Callable;
-import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.verify;
 
 public class DownloadOrUpdateExercisesTest {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetailsTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetailsTest.java
index 56c73389..af5b4230 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetailsTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetCourseDetailsTest.java
@@ -19,7 +19,6 @@
 import org.mockito.Spy;
 
 import java.util.concurrent.Callable;
-import static com.google.common.truth.Truth.assertThat;
 
 public class GetCourseDetailsTest {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetOrganizationsTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetOrganizationsTest.java
index 43034183..b25fec23 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetOrganizationsTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetOrganizationsTest.java
@@ -20,7 +20,6 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import static org.mockito.Mockito.verify;
 
 public class GetOrganizationsTest {
     @Mock
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetUpdatableExercisesTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetUpdatableExercisesTest.java
index 5b45a0c1..b9858c73 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/GetUpdatableExercisesTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/GetUpdatableExercisesTest.java
@@ -32,10 +32,6 @@
 
 import java.nio.file.Path;
 import java.util.concurrent.Callable;
-import static com.google.common.truth.Truth.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.mockito.Matchers.any;
 
 public class GetUpdatableExercisesTest {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/ListCoursesTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/ListCoursesTest.java
index 29f2f362..392f29a9 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/ListCoursesTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/ListCoursesTest.java
@@ -22,7 +22,6 @@
 
 import java.util.List;
 import java.util.concurrent.Callable;
-import static com.google.common.truth.Truth.assertThat;
 
 public class ListCoursesTest {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/PasteWithCommentTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/PasteWithCommentTest.java
index 6782d4a5..1c863044 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/PasteWithCommentTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/PasteWithCommentTest.java
@@ -33,8 +33,6 @@
 import java.util.Locale;
 import java.util.Map;
 import java.util.concurrent.Callable;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.any;
 
 public class PasteWithCommentTest {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SendFeedbackTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SendFeedbackTest.java
index f2d7cdab..46874ed8 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SendFeedbackTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SendFeedbackTest.java
@@ -30,9 +30,6 @@
 import java.net.URI;
 import java.util.List;
 import java.util.concurrent.Callable;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
 
 public class SendFeedbackTest {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitTest.java
index aadf2720..9042ab77 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitTest.java
@@ -35,8 +35,6 @@
 import java.util.Locale;
 import java.util.Map;
 import java.util.concurrent.Callable;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.any;
 
 public class SubmitTest {
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index e4d3cf2f..e492da95 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -1,19 +1,13 @@
-/*
- * Author: Ohtu project summer devs 2017
- */
-
 package fi.helsinki.cs.tmc.core.communication.http.serialization;
 
 import static org.junit.Assert.assertEquals;
 
 import fi.helsinki.cs.tmc.core.communication.serialization.AdaptiveExerciseParser;
-
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 
 import org.junit.Before;
 import org.junit.Test;
 
-
 public class AdaptiveExerciseParserTest {
 
     private AdaptiveExerciseParser adaptiveParser;
@@ -33,11 +27,6 @@ public void jsonIllegalException() {
         adaptiveParser.parseFromJson(" ");
     }
     
-    public void exerciseHasZipUrl() {
-        Exercise exercise = adaptiveParser.parseFromJson("{ available: true, zip_url: additionToString }");
-        assertEquals(exercise.getDownloadUrl().toString(), "http://localhost:3200additionToString");
-    }
-    
     @Test
     public void exerciseNotAvailable() {
         Exercise exercise = adaptiveParser.parseFromJson("{ available: false, zip_url: additionToString }");
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java b/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java
index 0099b958..5263551e 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/spyware/EventSendBufferTest.java
@@ -43,12 +43,6 @@
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicInteger;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.verify;
 
 public class EventSendBufferTest {
 

From 635b2d15bb065828827ba02aca22e64008a56f28 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Tue, 23 May 2017 15:10:16 +0300
Subject: [PATCH 069/113] checkstyle

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |  3 +-
 .../SubmitAdaptiveExerciseToSkillifier.java   | 37 +++++------
 .../TmcServerCommunicationTaskFactory.java    | 13 ++--
 .../ExerciseDownloadFailedException.java      |  4 --
 .../ExtractingExericeFailedException.java     |  7 --
 ...ubmitAdaptiveExerciseToSkillifierTest.java | 66 +++++++++----------
 6 files changed, 55 insertions(+), 75 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 3bcc40c2..62403fee 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -1,10 +1,10 @@
 package fi.helsinki.cs.tmc.core;
 
 import fi.helsinki.cs.tmc.core.commands.AuthenticateUser;
+import fi.helsinki.cs.tmc.core.commands.DownloadAdaptiveExercise;
 import fi.helsinki.cs.tmc.core.commands.DownloadCompletedExercises;
 import fi.helsinki.cs.tmc.core.commands.DownloadModelSolution;
 import fi.helsinki.cs.tmc.core.commands.DownloadOrUpdateExercises;
-import fi.helsinki.cs.tmc.core.commands.DownloadAdaptiveExercise;
 import fi.helsinki.cs.tmc.core.commands.GetCourseDetails;
 import fi.helsinki.cs.tmc.core.commands.GetOrganizations;
 import fi.helsinki.cs.tmc.core.commands.GetUnreadReviews;
@@ -40,7 +40,6 @@
 import fi.helsinki.cs.tmc.spyware.LoggableEvent;
 
 import com.google.common.annotations.Beta;
-import fi.helsinki.cs.tmc.core.commands.Command;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index 75d24427..bc4bb79d 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -1,9 +1,5 @@
 package fi.helsinki.cs.tmc.core.commands;
 
-import com.google.common.annotations.VisibleForTesting;
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParser;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.communication.serialization.SubmissionResultParser;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
@@ -11,21 +7,20 @@
 import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
 import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
-import fi.helsinki.cs.tmc.core.exceptions.TmcInterruptionException;
-import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
-import fi.helsinki.cs.tmc.langs.domain.NoLanguagePluginFoundException;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.IOException;
-import java.nio.file.Path;
 import java.util.HashMap;
 import java.util.concurrent.Callable;
 
-/**
- * Created by markovai on 22.5.2017.
- */
+
 public class SubmitAdaptiveExerciseToSkillifier extends AbstractSubmissionCommand<SubmissionResult> {
     private static final Logger logger = LoggerFactory.getLogger(AbstractSubmissionCommand.class);
     private static final int DEFAULT_POLL_INTERVAL = 1000 * 2;
@@ -39,9 +34,9 @@ public SubmitAdaptiveExerciseToSkillifier(ProgressObserver observer, Exercise ex
 
     @VisibleForTesting
     SubmitAdaptiveExerciseToSkillifier(
-        ProgressObserver observer,
-        Exercise exercise,
-        TmcServerCommunicationTaskFactory tmcServerCommunicationTaskFactory) {
+            ProgressObserver observer,
+            Exercise exercise,
+            TmcServerCommunicationTaskFactory tmcServerCommunicationTaskFactory) {
         super(observer, tmcServerCommunicationTaskFactory);
         this.exercise = exercise;
     }
@@ -56,7 +51,7 @@ public SubmissionResult call() throws Exception {
         //Get SubmissionResponse from server, contains submissionURL and pasteURL
         
         TmcServerCommunicationTaskFactory.SubmissionResponse submissionResponse =
-            submitToSkillifier(exercise, new HashMap<String, String>());
+                submitToSkillifier(exercise, new HashMap<String, String>());
 
         while (true) {
             checkInterrupt();
@@ -68,8 +63,8 @@ public SubmissionResult call() throws Exception {
             try {
                 logger.debug("Checking if server is done processing submission");
                 Callable<String> submissionResultFetcher =
-                    tmcServerCommunicationTaskFactory.getSubmissionFetchTask(
-                        submissionResponse.submissionUrl);
+                        tmcServerCommunicationTaskFactory.getSubmissionFetchTask(
+                                submissionResponse.submissionUrl);
 
                 String submissionStatus = submissionResultFetcher.call();
                 JsonElement submission = new JsonParser().parse(submissionStatus);
@@ -142,9 +137,9 @@ private TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
 
         try {
             TmcServerCommunicationTaskFactory.SubmissionResponse response
-                = tmcServerCommunicationTaskFactory
-                .getSubmittingExerciseToSkillifierTask(exercise, byteToSubmit, extraParams)
-                .call();
+                    = tmcServerCommunicationTaskFactory
+                    .getSubmittingExerciseToSkillifierTask(exercise, byteToSubmit, extraParams)
+                    .call();
 
             informObserver(1, "Submission successfully completed");
             logger.info("Submission successfully completed");
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 8b7f31af..0d327352 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -151,12 +151,11 @@ public Callable<Exercise> getAdaptiveExercise()
             @Override
             public Exercise call() throws Exception {
                 try {
-                    Callable<String> download = new HttpTasks().
-                                        getForText(URI.create(SKILLIFIER_URL));
+                    Callable<String> download = new HttpTasks()
+                                        .getForText(URI.create(SKILLIFIER_URL));
                     String json = download.call();
                     return adaptiveExerciseParser.parseFromJson(json);
-                }
-                catch (Exception ex) {
+                } catch (Exception ex) {
                     LOG.log(Level.WARNING, "Downloading and parsing adaptive exercise URL failed.");
                     return null;
                 }
@@ -233,7 +232,7 @@ public Callable<byte[]> getDownloadingExerciseSolutionZipTask(Exercise exercise)
     }
 
     public Callable<SubmissionResponse> getSubmittingExerciseToSkillifierTask(
-        final Exercise exercise, final byte[] sourceZip, Map<String, String> extraParams) {
+            final Exercise exercise, final byte[] sourceZip, Map<String, String> extraParams) {
 
         final Map<String, String> params = new LinkedHashMap<>();
         params.put("client_time", "" + (System.currentTimeMillis() / 1000L));
@@ -248,8 +247,8 @@ public SubmissionResponse call() throws Exception {
                     URI submitUrl = URI.create("");
                     //final URI submitUrl = addApiCallQueryParameters(exercise.getReturnUrl());
                     final Callable<String> upload = new HttpTasks()
-                        .uploadFileForTextDownload(submitUrl, params,
-                            "submission[file]", sourceZip);
+                            .uploadFileForTextDownload(submitUrl, params,
+                                "submission[file]", sourceZip);
                     response = upload.call();
                 } catch (FailedHttpResponseException ex) {
                     return checkForObsoleteClient(ex);
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExerciseDownloadFailedException.java b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExerciseDownloadFailedException.java
index 0e8fe71d..f701f228 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExerciseDownloadFailedException.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExerciseDownloadFailedException.java
@@ -10,8 +10,4 @@ public class ExerciseDownloadFailedException extends TmcCoreException {
     public ExerciseDownloadFailedException(Exercise exercise, Exception ex) {
         super("Downloading exercise " + exercise.getName() + " failed", ex);
     }
-    
-    public ExerciseDownloadFailedException(URI url, Exception ex){
-        super("Write exercise zip to disk from " + url.toString() + " failed", ex);
-    }
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExtractingExericeFailedException.java b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExtractingExericeFailedException.java
index 98364294..88dc5af5 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExtractingExericeFailedException.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/exceptions/ExtractingExericeFailedException.java
@@ -1,16 +1,9 @@
 package fi.helsinki.cs.tmc.core.exceptions;
 
 import fi.helsinki.cs.tmc.core.domain.Exercise;
-import java.net.URI;
 
 public class ExtractingExericeFailedException extends TmcCoreException {
     public ExtractingExericeFailedException(Exercise exercise, Exception ex) {
         super("Extracting zip for " + exercise.getName() + " failed", ex);
     }
-    
-    // extract exercise when name is unknown, 
-    public ExtractingExericeFailedException(URI url, Exception ex) {
-        super("Extracting zip from " + url.toString() + " failed", ex);
-    }
-    
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index 959e6a5c..02fef7cc 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -1,5 +1,12 @@
 package fi.helsinki.cs.tmc.core.commands;
 
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
+
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
@@ -12,6 +19,7 @@
 import fi.helsinki.cs.tmc.core.utils.TestUtils;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutorImpl;
+
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -22,21 +30,11 @@
 
 import java.net.URI;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.Locale;
 import java.util.Map;
 import java.util.concurrent.Callable;
 
-import static org.junit.Assert.*;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verifyZeroInteractions;
-import static org.mockito.Mockito.when;
 
-/**
- * Created by markovai on 23.5.2017.
- */
 public class SubmitAdaptiveExerciseToSkillifierTest {
     @Rule
     public TemporaryFolder testFolder = new TemporaryFolder();
@@ -55,7 +53,7 @@ public class SubmitAdaptiveExerciseToSkillifierTest {
     private static final URI PASTE_URI = URI.create("http://example.com/paste");
     private static final URI SUBMISSION_URI = URI.create("http://example.com/submission");
     private static final TmcServerCommunicationTaskFactory.SubmissionResponse STUB_RESPONSE =
-        new TmcServerCommunicationTaskFactory.SubmissionResponse(SUBMISSION_URI, PASTE_URI);
+            new TmcServerCommunicationTaskFactory.SubmissionResponse(SUBMISSION_URI, PASTE_URI);
 
     private static final String STUB_PROSESSING_RESPONSE = "{status: \"processing\"}";
     private static final String STUB_PROSESSING_DONE_RESPONSE = "{status: \"OK\"}";
@@ -84,30 +82,30 @@ public void testCall() throws Exception {
         verifyZeroInteractions(mockObserver);
         doReturn(new byte[0]).when(langs).compressProject(any(Path.class));
         when(
-            factory.getSubmittingExerciseToSkillifierTask(
-                any(Exercise.class), any(byte[].class), any(Map.class)))
-            .thenReturn(
-                new Callable<TmcServerCommunicationTaskFactory.SubmissionResponse>() {
-                    @Override
-                    public TmcServerCommunicationTaskFactory.SubmissionResponse call() throws Exception {
-                        return STUB_RESPONSE;
-                    }
-                });
+                        factory.getSubmittingExerciseToSkillifierTask(
+                                any(Exercise.class), any(byte[].class), any(Map.class)))
+                .thenReturn(
+                        new Callable<TmcServerCommunicationTaskFactory.SubmissionResponse>() {
+                            @Override
+                            public TmcServerCommunicationTaskFactory.SubmissionResponse call() throws Exception {
+                                return STUB_RESPONSE;
+                            }
+                        });
         when(factory.getSubmissionFetchTask(any(URI.class)))
-            .thenReturn(
-                new Callable<String>() {
-                    @Override
-                    public String call() throws Exception {
-                        return STUB_PROSESSING_RESPONSE;
-                    }
-                })
-            .thenReturn(
-                new Callable<String>() {
-                    @Override
-                    public String call() throws Exception {
-                        return STUB_PROSESSING_DONE_RESPONSE;
-                    }
-                });
+                .thenReturn(
+                        new Callable<String>() {
+                            @Override
+                            public String call() throws Exception {
+                                return STUB_PROSESSING_RESPONSE;
+                            }
+                        })
+                .thenReturn(
+                        new Callable<String>() {
+                            @Override
+                            public String call() throws Exception {
+                                return STUB_PROSESSING_DONE_RESPONSE;
+                            }
+                        });
 
         SubmissionResult result = command.call();
         assertEquals(result.getStatus(), SubmissionResult.Status.OK);

From 9bd990be60c230d8511eec698f34197358f2493e Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Wed, 24 May 2017 10:27:36 +0300
Subject: [PATCH 070/113] placeholder SubmissionResult

---
 .../SubmitAdaptiveExerciseToSkillifier.java   | 20 ++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index bc4bb79d..b97fcb46 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -61,6 +61,7 @@ public SubmissionResult call() throws Exception {
                 logger.debug("Interrupted while sleeping", ex);
             }
             try {
+                //get json from submissionurl
                 logger.debug("Checking if server is done processing submission");
                 Callable<String> submissionResultFetcher =
                         tmcServerCommunicationTaskFactory.getSubmissionFetchTask(
@@ -83,7 +84,11 @@ public SubmissionResult call() throws Exception {
                     logger.debug("Done parsing server response");
                     informObserver(1, "Successfully read adaptive submission results");
 
-                    return result;
+                    //placeholder
+                    SubmissionResult res = new SubmissionResult();
+                    res.setCourse(exercise.getCourseName());
+                    res.setExerciseName(exercise.getName());
+                    return res;
                 }
             } catch (Exception ex) {
                 informObserver(1, "Error while waiting for response from server");
@@ -110,17 +115,19 @@ private TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
             System.out.println(e.toString());
         }
 
-
         byte[] byteToSubmit = json.getBytes();
 
         informObserver(0, "Zipping project.");
-        /*
+
+        //Only a json containing information about the exercise is sent to skillifier at this point.
+
+/*
         Path tmcRoot = TmcSettingsHolder.get().getTmcProjectDirectory();
         Path projectPath = exercise.getExerciseDirectory(tmcRoot);
-        */
+
 
         //logger.info("Submitting adaptive project to path {}", projectPath);
-/*
+
         try {
             byteToSubmit = TmcLangsHolder.get().compressProject(projectPath);
         } catch (IOException | NoLanguagePluginFoundException ex) {
@@ -129,12 +136,15 @@ private TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
             throw new TmcCoreException("Failed to compress adaptive project", ex);
         }
 */
+
         extraParams.put("error_msg_locale", TmcSettingsHolder.get().getLocale().toString());
 
         checkInterrupt();
         informObserver(0.5, "Submitting adaptive project");
         logger.info("Submitting adaptive project to skillifier");
 
+        //skillifier returns json which is parsed into SubmissionResponse
+
         try {
             TmcServerCommunicationTaskFactory.SubmissionResponse response
                     = tmcServerCommunicationTaskFactory

From d6fd027406dfaefaa906d2f546ad91df63dca365 Mon Sep 17 00:00:00 2001
From: Qianyue Jin <jinzilailai@gmail.com>
Date: Wed, 24 May 2017 12:55:26 +0300
Subject: [PATCH 071/113] add again submit adaptive exercise to core

---
 src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index b7ca30c8..397747b1 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -39,6 +39,7 @@
 import fi.helsinki.cs.tmc.spyware.LoggableEvent;
 
 import com.google.common.annotations.Beta;
+import fi.helsinki.cs.tmc.core.commands.SubmitAdaptiveExerciseToSkillifier;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -142,11 +143,16 @@ public Callable<Void> sendSpywareEvents(
         return new ExceptionTrackingCallable<>(new SendSpywareEvents(observer, currentCourse, events));
 
     }
-
+    
     public Callable<SubmissionResult> submit(ProgressObserver observer, Exercise exercise) {
         logger.info("Creating new Submit command");
         return new ExceptionTrackingCallable<>(new Submit(observer, exercise));
     }
+    
+    public Callable<SubmissionResult> submitAdaptiveExercise(ProgressObserver observer, Exercise exercise) {
+        logger.info("Creating new submit adaptiveExercise command");
+        return new ExceptionTrackingCallable<>(new SubmitAdaptiveExerciseToSkillifier(observer, exercise));
+    }
 
     public Callable<GetUpdatableExercises.UpdateResult> getExerciseUpdates(
             ProgressObserver observer, Course course) {

From 42072318b9a281d33f19d7820c58a6beb2ba2e48 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Wed, 24 May 2017 14:50:19 +0300
Subject: [PATCH 072/113] Skillifier works when running from localhost, Gson
 parsed, certain tests commented out

---
 .../commands/DownloadAdaptiveExercise.java    |  5 ++--
 .../TmcServerCommunicationTaskFactory.java    | 17 +++++++-----
 .../serialization/AdaptiveExerciseParser.java | 20 +++++++-------
 .../cs/tmc/core/domain/AdaptiveExercise.java  | 26 +++++++++++++++++++
 .../DownloadAdaptiveExerciseTest.java         | 11 ++++----
 .../tmc/core/domain/AdaptiveExerciseTest.java | 21 +++++++++++++++
 6 files changed, 76 insertions(+), 24 deletions(-)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExercise.java
 create mode 100644 src/test/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExerciseTest.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index eddd5e35..034610f1 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -1,12 +1,14 @@
 package fi.helsinki.cs.tmc.core.commands;
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.domain.AdaptiveExercise;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.Progress;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 
 
 import com.google.common.annotations.VisibleForTesting;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -26,11 +28,10 @@ public DownloadAdaptiveExercise(ProgressObserver observer) {
     @Override
     public Exercise call() throws Exception {
         logger.info("Checking adaptive exercises availability");
-        Exercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
+        AdaptiveExercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
         if (exercise == null) {
             return null;
         }
-        exercise.setName("AdaLovelace");
         exercise.setCourseName("None");
         byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
         //checkInterrupt();
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index a4fd2806..78f13447 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -28,6 +28,7 @@
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.google.gson.reflect.TypeToken;
+import fi.helsinki.cs.tmc.core.domain.AdaptiveExercise;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
@@ -56,8 +57,7 @@ public class TmcServerCommunicationTaskFactory {
     private static final Logger LOG = Logger.getLogger(
             TmcServerCommunicationTaskFactory.class.getName());
     public static final int API_VERSION = 8;
-    private static final String SKILLIFIER_URL = "http://ohtu-skillifier.herokuapp.com/next.json";
-
+    
     private TmcSettings settings;
     private Oauth oauth;
     private AdaptiveExerciseParser adaptiveExerciseParser;
@@ -144,15 +144,20 @@ private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
         url = UriUtils.withQueryParam(url, "access_token", oauth.getToken());
         return url;
     }
+    
+    private URI getSkillifierUrl() {
+        // Add courses and themes
+        return URI.create("http://localhost:3200/Example/default/next.json");
+    }
 
-    public Callable<Exercise> getAdaptiveExercise() 
+    public Callable<AdaptiveExercise> getAdaptiveExercise()
         throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
-        return wrapWithNotLoggedInException(new Callable<Exercise>() {
+        return wrapWithNotLoggedInException(new Callable<AdaptiveExercise>() {
             @Override
-            public Exercise call() throws Exception {
+            public AdaptiveExercise call() throws Exception {
                 try {
                     Callable<String> download = new HttpTasks()
-                                        .getForText(URI.create(SKILLIFIER_URL));
+                                        .getForText(getSkillifierUrl());
                     String json = download.call();
                     return adaptiveExerciseParser.parseFromJson(json);
                 } catch (Exception ex) {
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 707b0ef5..570fa649 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -1,18 +1,18 @@
 package fi.helsinki.cs.tmc.core.communication.serialization;
 
-import fi.helsinki.cs.tmc.core.domain.Exercise;
+import fi.helsinki.cs.tmc.core.domain.AdaptiveExercise;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
 
-import org.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.net.URI;
-
 public class AdaptiveExerciseParser {
     
     private static final Logger logger = LoggerFactory.getLogger(AdaptiveExerciseParser.class);
 
-    public Exercise parseFromJson(String json) {
+    public AdaptiveExercise parseFromJson(String json) {
         if (json == null) {
             throw new NullPointerException("Json string is null");
         }
@@ -20,12 +20,10 @@ public Exercise parseFromJson(String json) {
             throw new IllegalArgumentException("Empty input");
         }
         try {
-            JSONObject obj = new JSONObject(json);
-            if (obj.getBoolean("available")) {                
-                Exercise exercise = new Exercise();
-                exercise.setDownloadUrl(URI.create("http://ohtu-skillifier.herokuapp.com"
-                           + obj.getString("zip_url")));
-                return exercise;
+            Gson gson = new GsonBuilder().create();
+            AdaptiveExercise adaptive = gson.fromJson(json, AdaptiveExercise.class);
+            if (adaptive.getAvailable()) {
+                return adaptive;
             }
             return null;
         } catch (RuntimeException ex) {
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExercise.java
new file mode 100644
index 00000000..69743932
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExercise.java
@@ -0,0 +1,26 @@
+package fi.helsinki.cs.tmc.core.domain;
+
+import com.google.gson.annotations.SerializedName;
+
+import java.io.Serializable;
+import java.net.URI;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class AdaptiveExercise extends Exercise implements Serializable {
+    
+    private static final Logger logger = LoggerFactory.getLogger(AdaptiveExercise.class);
+    //private static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSX";
+    
+    private boolean available;
+    
+    public Boolean getAvailable() {
+        return available;
+    }
+    
+    public void setAvailable(boolean available) {
+        this.available = available;
+    }
+    
+}
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index a0ec62ff..b661fa74 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -12,6 +12,7 @@
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.domain.AdaptiveExercise;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
@@ -51,9 +52,9 @@ public class DownloadAdaptiveExerciseTest {
     @Mock
     Course mockCourse;
     @Mock
-    Exercise mockExerciseOne;
+    AdaptiveExercise mockExerciseOne;
     @Mock
-    Callable<Exercise> mockGetAdaptiveExercise;
+    Callable<AdaptiveExercise> mockGetAdaptiveExercise;
 
     private Command<Exercise> command;
     TaskExecutor langs;
@@ -137,8 +138,8 @@ public void testDownloadAndExtractSuccessWithRealZip() throws Exception {
 
         when(settings.getTmcProjectDirectory()).thenReturn(testPath);
 
-        Exercise exercise = command.call();
-        assertTrue(Files.exists(testPath.resolve(exercise.getCourseName())));
-        FileUtils.deleteDirectory(testPath.resolve(exercise.getCourseName()).toFile());
+        //Exercise exercise = command.call();
+        //assertTrue(Files.exists(testPath.resolve(exercise.getCourseName())));
+        //FileUtils.deleteDirectory(testPath.resolve(exercise.getCourseName()).toFile());
     }
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExerciseTest.java
new file mode 100644
index 00000000..4917e7cc
--- /dev/null
+++ b/src/test/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExerciseTest.java
@@ -0,0 +1,21 @@
+package fi.helsinki.cs.tmc.core.domain;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import java.net.URI;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+public class AdaptiveExerciseTest {
+    
+    @Test
+    public void testParsingFromJson() {
+        String json = "{available:true, zip_url:none}";
+        Gson gson = new GsonBuilder().create();
+        AdaptiveExercise adaptive = gson.fromJson(json, AdaptiveExercise.class);
+        assertTrue(adaptive.getAvailable());
+    }
+    
+}

From d57e07f0024c5f647d6a2cf1d9a5b05fc561b816 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Wed, 24 May 2017 15:27:59 +0300
Subject: [PATCH 073/113] adaptive submit to localhost skillifier

---
 .../SubmitAdaptiveExerciseToSkillifier.java   | 12 +++--
 .../TmcServerCommunicationTaskFactory.java    | 49 +++++++++++++++++--
 .../core/communication/http/HttpTasks.java    |  6 +++
 .../submission/AdaptiveSubmissionResult.java  | 39 +++++++++++++++
 4 files changed, 98 insertions(+), 8 deletions(-)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/domain/submission/AdaptiveSubmissionResult.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index b97fcb46..e67f54d2 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -4,6 +4,7 @@
 import fi.helsinki.cs.tmc.core.communication.serialization.SubmissionResultParser;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.domain.submission.AdaptiveSubmissionResult;
 import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
 import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
@@ -18,6 +19,7 @@
 import org.slf4j.LoggerFactory;
 
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.concurrent.Callable;
 
 
@@ -77,9 +79,13 @@ public SubmissionResult call() throws Exception {
                 } else {
                     logger.debug("Server done, parsing results");
                     informObserver(0.6, "Reading adaptive submission result");
+                    System.out.println(submission);
 
                     SubmissionResultParser resultParser = new SubmissionResultParser();
-                    SubmissionResult result = resultParser.parseFromJson(submissionStatus);
+
+                    Gson gson = new Gson();
+                    AdaptiveSubmissionResult result = gson.fromJson(submission, AdaptiveSubmissionResult.class);
+                    //.parseFromJson(submissionStatus);
 
                     logger.debug("Done parsing server response");
                     informObserver(1, "Successfully read adaptive submission results");
@@ -88,7 +94,7 @@ public SubmissionResult call() throws Exception {
                     SubmissionResult res = new SubmissionResult();
                     res.setCourse(exercise.getCourseName());
                     res.setExerciseName(exercise.getName());
-                    return res;
+                    return result.toSubmissionResult();
                 }
             } catch (Exception ex) {
                 informObserver(1, "Error while waiting for response from server");
@@ -117,7 +123,7 @@ private TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
 
         byte[] byteToSubmit = json.getBytes();
 
-        informObserver(0, "Zipping project.");
+        //informObserver(0, "Zipping project.");
 
         //Only a json containing information about the exercise is sent to skillifier at this point.
 
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 90e2e18f..8933982b 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -231,23 +231,61 @@ public Callable<byte[]> getDownloadingExerciseSolutionZipTask(Exercise exercise)
     }
 
     public Callable<SubmissionResponse> getSubmittingExerciseToSkillifierTask(
-            final Exercise exercise, final byte[] sourceZip, Map<String, String> extraParams) {
+            final Exercise exercise, final byte[] byteToSend, Map<String, String> extraParams) {
 
         final Map<String, String> params = new LinkedHashMap<>();
         params.put("client_time", "" + (System.currentTimeMillis() / 1000L));
         params.put("client_nanotime", "" + System.nanoTime());
         params.putAll(extraParams);
 
+        /*
+        return new Callable<SubmissionResponse>() {
+            @Override
+            public SubmissionResponse call() throws Exception {
+                String response;
+                try {
+                    URI submitUrl = URI.create("http://localhost:3200/submit");
+                    //final URI submitUrl = addApiCallQueryParameters(exercise.getReturnUrl());
+                    final Callable<String> upload = new HttpTasks()
+                            .uploadRawDataForTextDownload(submitUrl,params,byteToSend);
+                            //.uploadFileForTextDownload(submitUrl, params,
+                            //"submission[file]", byteToSend);
+                    response = upload.call();
+                } catch (FailedHttpResponseException ex) {
+                    return checkForObsoleteClient(ex);
+                }
+
+                JsonObject respJson = new JsonParser().parse(response).getAsJsonObject();
+                if (respJson.get("error") != null) {
+                    throw new RuntimeException(
+                        "Server responded with error: " + respJson.get("error"));
+                } else if (respJson.get("submission_url") != null) {
+                    try {
+                        URI submissionUrl = new URI(respJson.get("submission_url").getAsString());
+                        URI pasteUrl = new URI(respJson.get("paste_url").getAsString());
+                        return new SubmissionResponse(submissionUrl, pasteUrl);
+                    } catch (Exception e) {
+                        throw new RuntimeException(
+                            "Server responded with malformed " + "submission url");
+                    }
+                } else {
+                    throw new RuntimeException("Server returned unknown response");
+                }
+            }
+        };
+        */
+
+
         return wrapWithNotLoggedInException(new Callable<SubmissionResponse>() {
             @Override
             public SubmissionResponse call() throws Exception {
                 String response;
                 try {
-                    URI submitUrl = URI.create("");
+                    URI submitUrl = URI.create("http://localhost:3200/submit");
                     //final URI submitUrl = addApiCallQueryParameters(exercise.getReturnUrl());
                     final Callable<String> upload = new HttpTasks()
-                            .uploadFileForTextDownload(submitUrl, params,
-                                "submission[file]", sourceZip);
+                            .uploadRawDataForTextDownload(submitUrl, params,
+                                 byteToSend);
                     response = upload.call();
                 } catch (FailedHttpResponseException ex) {
                     return checkForObsoleteClient(ex);
@@ -272,9 +310,10 @@ public SubmissionResponse call() throws Exception {
             }
 
             //TODO: Cancellable?
-        });
+            });
     }
 
+
     public Callable<SubmissionResponse> getSubmittingExerciseTask(
             final Exercise exercise, final byte[] sourceZip, Map<String, String> extraParams) {
 
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpTasks.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpTasks.java
index d088e705..a6c71ce8 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpTasks.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/http/HttpTasks.java
@@ -91,6 +91,12 @@ public Callable<String> uploadFileForTextDownload(
         return downloadToText(createExecutor(request));
     }
 
+    public Callable<String> uploadRawDataForTextDownload(
+            URI url, Map<String, String> params, byte[] data) {
+        HttpPost request = makeRawPostRequest(url, data, params);
+        return downloadToText(createExecutor(request));
+    }
+
     private Callable<byte[]> downloadToBinary(final HttpRequestExecutor download) {
         return new Callable<byte[]>() {
             @Override
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/submission/AdaptiveSubmissionResult.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/submission/AdaptiveSubmissionResult.java
new file mode 100644
index 00000000..8a688fbf
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/submission/AdaptiveSubmissionResult.java
@@ -0,0 +1,39 @@
+package fi.helsinki.cs.tmc.core.domain.submission;
+
+import com.google.gson.annotations.SerializedName;
+import fi.helsinki.cs.tmc.langs.domain.TestResult;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Created by markovai on 24.5.2017.
+ */
+public class AdaptiveSubmissionResult {
+    public AdaptiveSubmissionResult() {
+        status = SubmissionResult.Status.ERROR;
+        error = null;
+        points = 0;
+    }
+
+
+    @SerializedName("error")
+    private String error; // e.g. compile error
+
+    @SerializedName("status")
+    private SubmissionResult.Status status;
+
+    @SerializedName("points")
+    private int points;
+
+    public SubmissionResult toSubmissionResult(){
+        SubmissionResult s = new SubmissionResult();
+        s.setError(error);
+        s.setStatus(status);
+        ArrayList<String> p = new ArrayList<>();
+        p.add(String.valueOf(points));
+        s.setPoints(p);
+        return s;
+    }
+}

From c1c90cc53cbac27a659dfb340fe6ada02ffc9dd8 Mon Sep 17 00:00:00 2001
From: Saku Olin <sakuolin@dhcp-asv-117.helsinki.fi>
Date: Fri, 26 May 2017 10:26:20 +0300
Subject: [PATCH 074/113] Skillifier URL method changed, currently running from
 local

---
 .../TmcServerCommunicationTaskFactory.java             | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 8933982b..a5292a91 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -56,7 +56,6 @@ public class TmcServerCommunicationTaskFactory {
     private static final Logger LOG = Logger.getLogger(
             TmcServerCommunicationTaskFactory.class.getName());
     public static final int API_VERSION = 8;
-    private static final String SKILLIFIER_URL = "http://ohtu-skillifier.herokuapp.com/next.json";
 
     private TmcSettings settings;
     private Oauth oauth;
@@ -144,6 +143,13 @@ private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
         url = UriUtils.withQueryParam(url, "access_token", oauth.getToken());
         return url;
     }
+    
+    private URI getSkillifierUrl(String addition) {
+        if (!addition.isEmpty()) {
+            return URI.create("localhost:3200/Example/Default/" + addition);
+        }
+        return URI.create("localhost:3200/Example/Default/");
+    }
 
     public Callable<Exercise> getAdaptiveExercise() 
         throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
@@ -152,7 +158,7 @@ public Callable<Exercise> getAdaptiveExercise()
             public Exercise call() throws Exception {
                 try {
                     Callable<String> download = new HttpTasks()
-                                        .getForText(URI.create(SKILLIFIER_URL));
+                                        .getForText(getSkillifierUrl("next.json"));
                     String json = download.call();
                     return adaptiveExerciseParser.parseFromJson(json);
                 } catch (Exception ex) {

From e1ae073a7c64e381be8f9885b74649f18a9e6f03 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Fri, 26 May 2017 13:48:54 +0300
Subject: [PATCH 075/113] new skillfier url and checkstyle

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |  2 +-
 .../SubmitAdaptiveExerciseToSkillifier.java   | 13 +++++------
 .../TmcServerCommunicationTaskFactory.java    |  6 ++---
 .../cs/tmc/core/domain/AdaptiveExercise.java  |  7 ++----
 .../submission/AdaptiveSubmissionResult.java  | 19 +++++++---------
 ...ubmitAdaptiveExerciseToSkillifierTest.java | 22 ++++---------------
 .../tmc/core/domain/AdaptiveExerciseTest.java |  5 ++---
 7 files changed, 25 insertions(+), 49 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 8fb0e8bf..da8e4b01 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -19,6 +19,7 @@
 import fi.helsinki.cs.tmc.core.commands.SendFeedback;
 import fi.helsinki.cs.tmc.core.commands.SendSpywareEvents;
 import fi.helsinki.cs.tmc.core.commands.Submit;
+import fi.helsinki.cs.tmc.core.commands.SubmitAdaptiveExerciseToSkillifier;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
@@ -39,7 +40,6 @@
 import fi.helsinki.cs.tmc.spyware.LoggableEvent;
 
 import com.google.common.annotations.Beta;
-import fi.helsinki.cs.tmc.core.commands.SubmitAdaptiveExerciseToSkillifier;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index 3a9d5064..925bff06 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -1,8 +1,6 @@
 package fi.helsinki.cs.tmc.core.commands;
 
-import com.google.gson.GsonBuilder;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
-import fi.helsinki.cs.tmc.core.communication.serialization.SubmissionResultParser;
 import fi.helsinki.cs.tmc.core.domain.AdaptiveExercise;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
@@ -14,16 +12,14 @@
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
 import com.google.gson.JsonElement;
-import com.google.gson.JsonParser;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.net.URI;
 import java.util.HashMap;
-import java.util.Iterator;
-import java.util.concurrent.Callable;
 
 
 public class SubmitAdaptiveExerciseToSkillifier extends AbstractSubmissionCommand<SubmissionResult> {
@@ -52,9 +48,10 @@ public SubmitAdaptiveExerciseToSkillifier(ProgressObserver observer, String exer
     public SubmissionResult call() {
         logger.info("Submitting exercise {}", exercise.getName());
         informObserver(0, "Submitting exercise to server");
-        URI submissionUrl = tmcServerCommunicationTaskFactory.getSkillifierUrl(exercise.getName() + "/submit");
+        URI submissionUrl = tmcServerCommunicationTaskFactory.getSkillifierUrl(exercise.getName()
+                + "/submit?username=" + TmcSettingsHolder.get().getUsername());
 
-        String networkResult = null;
+        String networkResult = "";
         try {
             networkResult = tmcServerCommunicationTaskFactory.getSubmissionFetchTask(submissionUrl).call();
         } catch (Exception e) {
@@ -64,7 +61,7 @@ public SubmissionResult call() {
 
         Gson gson = new GsonBuilder().create();
         SubmissionResult result = gson.fromJson(networkResult, AdaptiveSubmissionResult.class).toSubmissionResult();
-        if (result.getError()!="null"){
+        if (result.getError() != "null") {
             logger.warn("submission result error: " + result.getError());
         }
         return result;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 62a20db2..b5b248d7 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -9,6 +9,7 @@
 import fi.helsinki.cs.tmc.core.communication.serialization.CourseListParser;
 import fi.helsinki.cs.tmc.core.communication.serialization.ReviewListParser;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
+import fi.helsinki.cs.tmc.core.domain.AdaptiveExercise;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.OauthCredentials;
@@ -28,7 +29,6 @@
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.google.gson.reflect.TypeToken;
-import fi.helsinki.cs.tmc.core.domain.AdaptiveExercise;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
@@ -147,9 +147,9 @@ private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
 
     public URI getSkillifierUrl(String addition) {
         if (!addition.isEmpty()) {
-            return URI.create("localhost:3200/Example/Default/" + addition);
+            return URI.create("http://tmc-adapt.testmycode.io/Example/default/" + addition);
         }
-        return URI.create("localhost:3200/Example/Default/");
+        return URI.create("http://tmc-adapt.testmycode.io/Example/default/");
     }
 
     public Callable<AdaptiveExercise> getAdaptiveExercise()
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExercise.java
index 69743932..b7634970 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExercise.java
@@ -1,13 +1,10 @@
 package fi.helsinki.cs.tmc.core.domain;
 
-import com.google.gson.annotations.SerializedName;
-
-import java.io.Serializable;
-import java.net.URI;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.Serializable;
+
 public class AdaptiveExercise extends Exercise implements Serializable {
     
     private static final Logger logger = LoggerFactory.getLogger(AdaptiveExercise.class);
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/submission/AdaptiveSubmissionResult.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/submission/AdaptiveSubmissionResult.java
index 8a688fbf..3e282d59 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/submission/AdaptiveSubmissionResult.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/submission/AdaptiveSubmissionResult.java
@@ -1,11 +1,8 @@
 package fi.helsinki.cs.tmc.core.domain.submission;
 
 import com.google.gson.annotations.SerializedName;
-import fi.helsinki.cs.tmc.langs.domain.TestResult;
 
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
 
 /**
  * Created by markovai on 24.5.2017.
@@ -27,13 +24,13 @@ public AdaptiveSubmissionResult() {
     @SerializedName("points")
     private int points;
 
-    public SubmissionResult toSubmissionResult(){
-        SubmissionResult s = new SubmissionResult();
-        s.setError(error);
-        s.setStatus(status);
-        ArrayList<String> p = new ArrayList<>();
-        p.add(String.valueOf(points));
-        s.setPoints(p);
-        return s;
+    public SubmissionResult toSubmissionResult() {
+        SubmissionResult submission = new SubmissionResult();
+        submission.setError(error);
+        submission.setStatus(status);
+        ArrayList<String> points = new ArrayList<>();
+        points.add(String.valueOf(this.points));
+        submission.setPoints(points);
+        return submission;
     }
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index f85154bd..ab294ef7 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -8,6 +8,7 @@
 import static org.mockito.Mockito.when;
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.communication.http.HttpTasks;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
@@ -69,7 +70,7 @@ public void setUp() {
 
         langs = spy(new TaskExecutorImpl());
         TmcLangsHolder.set(langs);
-        Exercise ex = new Exercise("name", "course");
+        Exercise ex = new Exercise("Example1", "Example");
         command = new SubmitAdaptiveExerciseToSkillifier(mockObserver, ex, factory);
 
         arithFuncsTempDir = TestUtils.getProject(this.getClass(), "arith_funcs");
@@ -79,26 +80,10 @@ public void setUp() {
 
     @Test(timeout = 10000)
     public void testCall() throws Exception {
+
         verifyZeroInteractions(mockObserver);
         doReturn(new byte[0]).when(langs).compressProject(any(Path.class));
-        when(
-                        factory.getSubmittingExerciseToSkillifierTask(
-                                any(Exercise.class), any(byte[].class), any(Map.class)))
-                .thenReturn(
-                        new Callable<TmcServerCommunicationTaskFactory.SubmissionResponse>() {
-                            @Override
-                            public TmcServerCommunicationTaskFactory.SubmissionResponse call() throws Exception {
-                                return STUB_RESPONSE;
-                            }
-                        });
         when(factory.getSubmissionFetchTask(any(URI.class)))
-                .thenReturn(
-                        new Callable<String>() {
-                            @Override
-                            public String call() throws Exception {
-                                return STUB_PROSESSING_RESPONSE;
-                            }
-                        })
                 .thenReturn(
                         new Callable<String>() {
                             @Override
@@ -108,6 +93,7 @@ public String call() throws Exception {
                         });
 
         SubmissionResult result = command.call();
+
         assertEquals(SubmissionResult.Status.OK, result.getStatus());
     }
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExerciseTest.java
index 4917e7cc..daae265b 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExerciseTest.java
@@ -1,10 +1,9 @@
 package fi.helsinki.cs.tmc.core.domain;
 
+import static org.junit.Assert.assertTrue;
+
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
-import java.net.URI;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
 
 import org.junit.Test;
 

From 16b8b9898aeba5c6ee71404c6f6d7d1c2b0be5e7 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Fri, 26 May 2017 15:25:29 +0300
Subject: [PATCH 076/113] submit test works with server

---
 .../core/commands/SubmitAdaptiveExerciseToSkillifierTest.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index ab294ef7..a7cb0fbc 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -71,7 +71,7 @@ public void setUp() {
         langs = spy(new TaskExecutorImpl());
         TmcLangsHolder.set(langs);
         Exercise ex = new Exercise("Example1", "Example");
-        command = new SubmitAdaptiveExerciseToSkillifier(mockObserver, ex, factory);
+        command = new SubmitAdaptiveExerciseToSkillifier(mockObserver, ex, new TmcServerCommunicationTaskFactory());
 
         arithFuncsTempDir = TestUtils.getProject(this.getClass(), "arith_funcs");
         when(mockExercise.getExerciseDirectory(any(Path.class))).thenReturn(arithFuncsTempDir);

From babc1365e1012ee56d32d94725ee78fa63b22c0a Mon Sep 17 00:00:00 2001
From: Ville Tanttu <ville.tanttu@cs.helsinki.fi>
Date: Fri, 26 May 2017 16:02:11 +0300
Subject: [PATCH 077/113] Fixed checkstyle and added some final keywords

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |  2 +-
 .../submission/AdaptiveSubmissionResult.java  | 27 +++++++++----------
 2 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 397747b1..a4287227 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -19,6 +19,7 @@
 import fi.helsinki.cs.tmc.core.commands.SendFeedback;
 import fi.helsinki.cs.tmc.core.commands.SendSpywareEvents;
 import fi.helsinki.cs.tmc.core.commands.Submit;
+import fi.helsinki.cs.tmc.core.commands.SubmitAdaptiveExerciseToSkillifier;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
@@ -39,7 +40,6 @@
 import fi.helsinki.cs.tmc.spyware.LoggableEvent;
 
 import com.google.common.annotations.Beta;
-import fi.helsinki.cs.tmc.core.commands.SubmitAdaptiveExerciseToSkillifier;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/submission/AdaptiveSubmissionResult.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/submission/AdaptiveSubmissionResult.java
index 8a688fbf..7258bc3d 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/submission/AdaptiveSubmissionResult.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/submission/AdaptiveSubmissionResult.java
@@ -1,11 +1,8 @@
 package fi.helsinki.cs.tmc.core.domain.submission;
 
 import com.google.gson.annotations.SerializedName;
-import fi.helsinki.cs.tmc.langs.domain.TestResult;
 
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
 
 /**
  * Created by markovai on 24.5.2017.
@@ -19,21 +16,21 @@ public AdaptiveSubmissionResult() {
 
 
     @SerializedName("error")
-    private String error; // e.g. compile error
+    private final String error; // e.g. compile error
 
     @SerializedName("status")
-    private SubmissionResult.Status status;
+    private final SubmissionResult.Status status;
 
     @SerializedName("points")
-    private int points;
-
-    public SubmissionResult toSubmissionResult(){
-        SubmissionResult s = new SubmissionResult();
-        s.setError(error);
-        s.setStatus(status);
-        ArrayList<String> p = new ArrayList<>();
-        p.add(String.valueOf(points));
-        s.setPoints(p);
-        return s;
+    private final int points;
+
+    public SubmissionResult toSubmissionResult() {
+        SubmissionResult submissionResult = new SubmissionResult();
+        submissionResult.setError(error);
+        submissionResult.setStatus(status);
+        ArrayList<String> submissionPoints = new ArrayList<>();
+        submissionPoints.add(String.valueOf(points));
+        submissionResult.setPoints(submissionPoints);
+        return submissionResult;
     }
 }

From a4b057006b51639fde782fd4d82b265004f93dfe Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio@helsinki.fi>
Date: Fri, 26 May 2017 19:11:03 +0300
Subject: [PATCH 078/113] added username parameter for adaptive exercise
 downloading

---
 .../core/communication/TmcServerCommunicationTaskFactory.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index b5b248d7..ae8676d6 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -159,7 +159,7 @@ public Callable<AdaptiveExercise> getAdaptiveExercise()
             public AdaptiveExercise call() throws Exception {
                 try {
                     Callable<String> download = new HttpTasks()
-                                        .getForText(getSkillifierUrl("next.json"));
+                                        .getForText(getSkillifierUrl("next.json?username=" + TmcSettingsHolder.get().getUsername()));
                     String json = download.call();
                     return adaptiveExerciseParser.parseFromJson(json);
                 } catch (Exception ex) {

From a22e6dfea3cdf06763115c45592514bc88668249 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Sat, 27 May 2017 12:04:00 +0300
Subject: [PATCH 079/113] added http:// to zip_url

---
 .../communication/serialization/AdaptiveExerciseParser.java | 4 ++++
 .../cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java  | 6 +++---
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 570fa649..e13dfb68 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -8,6 +8,8 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.net.URI;
+
 public class AdaptiveExerciseParser {
     
     private static final Logger logger = LoggerFactory.getLogger(AdaptiveExerciseParser.class);
@@ -23,6 +25,8 @@ public AdaptiveExercise parseFromJson(String json) {
             Gson gson = new GsonBuilder().create();
             AdaptiveExercise adaptive = gson.fromJson(json, AdaptiveExercise.class);
             if (adaptive.getAvailable()) {
+                String parsedUrl = adaptive.getZipUrl().toString();
+                adaptive.setZipUrl(URI.create("http://" + parsedUrl));
                 return adaptive;
             }
             return null;
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index b661fa74..0a86b93a 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -138,8 +138,8 @@ public void testDownloadAndExtractSuccessWithRealZip() throws Exception {
 
         when(settings.getTmcProjectDirectory()).thenReturn(testPath);
 
-        //Exercise exercise = command.call();
-        //assertTrue(Files.exists(testPath.resolve(exercise.getCourseName())));
-        //FileUtils.deleteDirectory(testPath.resolve(exercise.getCourseName()).toFile());
+        Exercise exercise = command.call();
+        assertTrue(Files.exists(testPath.resolve(exercise.getCourseName())));
+        FileUtils.deleteDirectory(testPath.resolve(exercise.getCourseName()).toFile());
     }
 }

From 1e64460355ec5d0d2df2f7a3533fbbb69e3d5774 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Sat, 27 May 2017 12:40:44 +0300
Subject: [PATCH 080/113] oauth support added for downloading

---
 .../communication/TmcServerCommunicationTaskFactory.java    | 2 +-
 .../cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java  | 6 +++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index ae8676d6..9dc0d898 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -159,7 +159,7 @@ public Callable<AdaptiveExercise> getAdaptiveExercise()
             public AdaptiveExercise call() throws Exception {
                 try {
                     Callable<String> download = new HttpTasks()
-                                        .getForText(getSkillifierUrl("next.json?username=" + TmcSettingsHolder.get().getUsername()));
+                                        .getForText(getSkillifierUrl("next.json?username=" + oauth.getToken()));
                     String json = download.call();
                     return adaptiveExerciseParser.parseFromJson(json);
                 } catch (Exception ex) {
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index 0a86b93a..2520d287 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -11,6 +11,7 @@
 import static org.mockito.Mockito.when;
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.AdaptiveExercise;
 import fi.helsinki.cs.tmc.core.domain.Course;
@@ -55,6 +56,8 @@ public class DownloadAdaptiveExerciseTest {
     AdaptiveExercise mockExerciseOne;
     @Mock
     Callable<AdaptiveExercise> mockGetAdaptiveExercise;
+    @Mock
+    Oauth oauth;
 
     private Command<Exercise> command;
     TaskExecutor langs;
@@ -116,6 +119,7 @@ private void setUpMocks() throws Exception {
 
         when(mockExerciseOne.getExtractionTarget(any(Path.class))).thenReturn(arithFuncsTempDir);
         when(settings.getTmcProjectDirectory()).thenReturn(testFolder.getRoot().toPath());
+        when(oauth.getToken()).thenReturn("testToken");
 
         when(factory.getDownloadingExerciseZipTask(mockExerciseOne))
                 .thenReturn(
@@ -131,7 +135,7 @@ public byte[] call() throws Exception {
     @Test
     public void testDownloadAndExtractSuccessWithRealZip() throws Exception {
         verifyZeroInteractions(langs);
-        TmcServerCommunicationTaskFactory realFactory = new TmcServerCommunicationTaskFactory();
+        TmcServerCommunicationTaskFactory realFactory = new TmcServerCommunicationTaskFactory(settings, oauth);
         assertNotNull(TmcSettingsHolder.get());
         command = new DownloadAdaptiveExercise(mockObserver, realFactory);
         Path testPath = Paths.get(System.getProperty("user.dir"));

From 4cc3eeb4e97b23334dd7e827c769c7bfee5d5e7f Mon Sep 17 00:00:00 2001
From: fogre <antti.kotiranta@helsinki.fi>
Date: Sun, 28 May 2017 13:18:05 +0300
Subject: [PATCH 081/113] working submit adaptive exercise

---
 .../core/commands/SubmitAdaptiveExerciseToSkillifier.java  | 7 ++++---
 .../serialization/AdaptiveExerciseParser.java              | 5 +++++
 .../commands/SubmitAdaptiveExerciseToSkillifierTest.java   | 2 +-
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index 925bff06..1c208e3d 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -49,11 +49,12 @@ public SubmissionResult call() {
         logger.info("Submitting exercise {}", exercise.getName());
         informObserver(0, "Submitting exercise to server");
         URI submissionUrl = tmcServerCommunicationTaskFactory.getSkillifierUrl(exercise.getName()
-                + "/submit?username=" + TmcSettingsHolder.get().getUsername());
-
+                + "/submit?username=" + TmcSettingsHolder.get().getToken().get());
+        logger.info("submissionurl: {}", submissionUrl.toString());
         String networkResult = "";
         try {
             networkResult = tmcServerCommunicationTaskFactory.getSubmissionFetchTask(submissionUrl).call();
+            logger.info("network result: {}", networkResult);
         } catch (Exception e) {
             informObserver(1, "Error while waiting for response from server");
             logger.warn("Error while updating adaptive submission status from server, continuing", e);
@@ -61,7 +62,7 @@ public SubmissionResult call() {
 
         Gson gson = new GsonBuilder().create();
         SubmissionResult result = gson.fromJson(networkResult, AdaptiveSubmissionResult.class).toSubmissionResult();
-        if (result.getError() != "null") {
+        if (!"null".equals(result.getError())) {
             logger.warn("submission result error: " + result.getError());
         }
         return result;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index e13dfb68..627583ad 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -21,6 +21,10 @@ public AdaptiveExercise parseFromJson(String json) {
         if (json.trim().isEmpty()) {
             throw new IllegalArgumentException("Empty input");
         }
+        if (json.contains("\"available\":\"false\"")) {
+            logger.info("The exercise is not available.");
+            return null;
+        }
         try {
             Gson gson = new GsonBuilder().create();
             AdaptiveExercise adaptive = gson.fromJson(json, AdaptiveExercise.class);
@@ -29,6 +33,7 @@ public AdaptiveExercise parseFromJson(String json) {
                 adaptive.setZipUrl(URI.create("http://" + parsedUrl));
                 return adaptive;
             }
+            logger.info("The gson parsed adaptive exercise is not available.");
             return null;
         } catch (RuntimeException ex) {
             logger.warn("Failed to parse an adaptive course from URL", ex);
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index ab294ef7..d48c2d72 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -78,7 +78,7 @@ public void setUp() {
         when(settings.getLocale()).thenReturn(new Locale("FI"));
     }
 
-    @Test(timeout = 10000)
+   // @Test(timeout = 10000)
     public void testCall() throws Exception {
 
         verifyZeroInteractions(mockObserver);

From 5b7a12bcd48e49fc7cb0d80173fb873a7ec158f6 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Mon, 29 May 2017 09:40:19 +0300
Subject: [PATCH 082/113] removed unneeded code, fixed submitAdaptive test

---
 .../SubmitAdaptiveExerciseToSkillifier.java   | 121 ------------------
 ...ubmitAdaptiveExerciseToSkillifierTest.java |   9 +-
 2 files changed, 7 insertions(+), 123 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index 1c208e3d..65ed6a91 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -6,25 +6,20 @@
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.domain.submission.AdaptiveSubmissionResult;
 import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
-import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
-import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
-import com.google.gson.JsonElement;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.net.URI;
-import java.util.HashMap;
 
 
 public class SubmitAdaptiveExerciseToSkillifier extends AbstractSubmissionCommand<SubmissionResult> {
     private static final Logger logger = LoggerFactory.getLogger(AbstractSubmissionCommand.class);
-    private static final int DEFAULT_POLL_INTERVAL = 1000 * 2;
 
     private Exercise exercise;
 
@@ -66,121 +61,5 @@ public SubmissionResult call() {
             logger.warn("submission result error: " + result.getError());
         }
         return result;
-
-        /*
-        TmcServerCommunicationTaskFactory.SubmissionResponse submissionResponse =
-                submitToSkillifier(exercise, new HashMap<String, String>());
-
-        while (true) {
-            checkInterrupt();
-            try {
-                Thread.sleep(DEFAULT_POLL_INTERVAL);
-            } catch (InterruptedException ex) {
-                logger.debug("Interrupted while sleeping", ex);
-            }
-            try {
-                //get json from submissionurl
-                logger.debug("Checking if server is done processing submission");
-                Callable<String> submissionResultFetcher =
-                        tmcServerCommunicationTaskFactory.getSubmissionFetchTask(
-                                submissionResponse.submissionUrl);
-
-                String submissionStatus = submissionResultFetcher.call();
-                JsonElement submission = new JsonParser().parse(submissionStatus);
-                if (isProcessing(submission)) {
-                    logger.debug("Server not done, sleeping for {}", DEFAULT_POLL_INTERVAL);
-                    informObserver(0.3, "Waiting for response from server");
-                    // TODO: Replace with variable interval polling
-                    Thread.sleep(DEFAULT_POLL_INTERVAL);
-                } else {
-                    logger.debug("Server done, parsing results");
-                    informObserver(0.6, "Reading adaptive submission result");
-                    System.out.println(submission);
-
-                    SubmissionResultParser resultParser = new SubmissionResultParser();
-
-                    Gson gson = new Gson();
-                    AdaptiveSubmissionResult result = gson.fromJson(submission, AdaptiveSubmissionResult.class);
-                    //.parseFromJson(submissionStatus);
-
-                    logger.debug("Done parsing server response");
-                    informObserver(1, "Successfully read adaptive submission results");
-
-                    //placeholder
-                    SubmissionResult res = new SubmissionResult();
-                    res.setCourse(exercise.getCourseName());
-                    res.setExerciseName(exercise.getName());
-                    return result.toSubmissionResult();
-                }
-            } catch (Exception ex) {
-                informObserver(1, "Error while waiting for response from server");
-                logger.warn("Error while updating adaptive submission status from server, continuing", ex);
-            }
-        }
-*/
-    }
-
-    private boolean isProcessing(JsonElement submissionStatus) {
-        return submissionStatus.getAsJsonObject().get("status").getAsString().equals("processing");
-    }
-
-    private TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
-            Exercise exercise, HashMap<String, String> extraParams) throws TmcCoreException {
-
-        //Gson gson = new Gson();
-        String exerciseName = exercise.getName();
-        /*
-        try {
-            json = gson.toJson(exercise);
-        } catch (Exception e) {
-            System.out.println(e.toString());
-        }
-        */
-
-        byte[] byteToSubmit = exerciseName.getBytes();
-
-/*
-        informObserver(0, "Zipping project.");
-
-        Path tmcRoot = TmcSettingsHolder.get().getTmcProjectDirectory();
-        Path projectPath = exercise.getExerciseDirectory(tmcRoot);
-
-
-        //logger.info("Submitting adaptive project to path {}", projectPath);
-
-        try {
-            byteToSubmit = TmcLangsHolder.get().compressProject(projectPath);
-        } catch (IOException | NoLanguagePluginFoundException ex) {
-            informObserver(1, "Failed to compress adaptive project");
-            logger.warn("Failed to compress adaptive project", ex);
-            throw new TmcCoreException("Failed to compress adaptive project", ex);
-        }
-*/
-
-        extraParams.put("error_msg_locale", TmcSettingsHolder.get().getLocale().toString());
-
-        checkInterrupt();
-        informObserver(0.5, "Submitting adaptive project");
-        logger.info("Submitting adaptive project to skillifier");
-
-
-        try {
-            TmcServerCommunicationTaskFactory.SubmissionResponse response
-                    = tmcServerCommunicationTaskFactory
-                    .getSubmittingExerciseToSkillifierTask(exercise, byteToSubmit, extraParams)
-                    .call();
-
-            informObserver(1, "Submission successfully completed");
-            logger.info("Submission successfully completed");
-
-            return response;
-        } catch (Exception ex) {
-            if (ex instanceof NotLoggedInException) {
-                throw (NotLoggedInException)ex;
-            }
-            informObserver(1, "Failed to submit exercise");
-            logger.warn("Failed to submit exercise", ex);
-            throw new TmcCoreException("Failed to submit exercise", ex);
-        }
     }
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index 4dac84aa..d0f3634f 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -3,10 +3,12 @@
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verifyZeroInteractions;
 import static org.mockito.Mockito.when;
 
+import com.google.common.base.Optional;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.communication.http.HttpTasks;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
@@ -70,15 +72,18 @@ public void setUp() {
 
         langs = spy(new TaskExecutorImpl());
         TmcLangsHolder.set(langs);
-        Exercise ex = new Exercise("Example1", "Example");
+        TmcSettingsHolder.set(settings);
+        Exercise ex = new Exercise("Osa01_01.WilliamLovelace", "Example");
         command = new SubmitAdaptiveExerciseToSkillifier(mockObserver, ex, new TmcServerCommunicationTaskFactory());
 
         arithFuncsTempDir = TestUtils.getProject(this.getClass(), "arith_funcs");
         when(mockExercise.getExerciseDirectory(any(Path.class))).thenReturn(arithFuncsTempDir);
         when(settings.getLocale()).thenReturn(new Locale("FI"));
+        Optional<String> mockToken = Optional.of("testToken");
+        settings.setToken(mockToken);
     }
 
-   // @Test(timeout = 10000)
+   @Test(timeout = 10000)
     public void testCall() throws Exception {
 
         verifyZeroInteractions(mockObserver);

From 540ea24e52e9a4f19c14d76991c4ab0cd571a1b1 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Mon, 29 May 2017 14:58:54 +0300
Subject: [PATCH 083/113] added theme model to core

---
 .../helsinki/cs/tmc/core/domain/Course.java   | 41 +++++++++++++++++
 .../fi/helsinki/cs/tmc/core/domain/Theme.java | 45 +++++++++++++++++++
 2 files changed, 86 insertions(+)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
index 37042281..00769dff 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
@@ -4,7 +4,9 @@
 
 import java.net.URI;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 public class Course {
 
@@ -15,6 +17,8 @@ public class Course {
 
     private List<Exercise> exercises;
 
+    private List<Theme> themes;
+
     @SerializedName("details_url")
     private URI detailsUrl;
 
@@ -67,6 +71,43 @@ public void setExercises(List<Exercise> exercises) {
         this.exercises = exercises;
     }
 
+    public List<Theme> getThemes() {
+        return themes;
+    }
+
+    /*
+    public void setThemes(List<Theme> themes) {
+        this.themes = themes;
+        for (final Theme theme : themes) {
+            //exercises.stream().filter(theme::shouldContain).collect(Collectors.toList());
+            List<Exercise> l = new ArrayList<>();
+            for (Exercise ex : exercises) {
+                if (theme.shouldContain(ex)) {
+                    l.add(ex);
+                }
+            }
+            theme.setExercises(l);
+        }
+    }
+    */
+
+    public void generateThemes() {
+        themes = new ArrayList<>();
+        Map<String, Theme> themeMap = new HashMap<>();
+        for (Exercise ex : exercises) {
+            String themeName = ex.getName().split("-")[0];
+            Theme theme = themeMap.get(themeName);
+            if (theme == null) {
+                theme = new Theme(themeName);
+                theme.getExercises().add(ex);
+                themeMap.put(themeName, theme);
+                themes.add(theme);
+            } else {
+                theme.getExercises().add(ex);
+            }
+        }
+    }
+
     public int getId() {
         return id;
     }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
new file mode 100644
index 00000000..558a4f0e
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
@@ -0,0 +1,45 @@
+package fi.helsinki.cs.tmc.core.domain;
+
+import java.util.List;
+
+/**
+ * Created by markovai on 29.5.2017.
+ */
+public class Theme {
+    private List<Exercise> exercises;
+    private boolean unlocked = false;
+    private String name;
+
+    public Theme(String name) {
+        this.name = name;
+    }
+
+    public List<Exercise> getExercises() {
+        return exercises;
+    }
+
+    public void setExercises(List<Exercise> exercises) {
+        this.exercises = exercises;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setUnlocked(boolean unlocked) {
+        this.unlocked = unlocked;
+    }
+
+    public boolean isUnlocked() {
+        return unlocked;
+    }
+
+    public boolean shouldContain(Exercise exercise){
+        return exercise.getName().contains(this.name);
+    }
+
+}

From 873fc8244178b03ab04356e7fdb8bb1547e6d9d5 Mon Sep 17 00:00:00 2001
From: Qianyue Jin <jinzilailai@gmail.com>
Date: Mon, 29 May 2017 15:05:56 +0300
Subject: [PATCH 084/113] theme checkstyle in core

---
 src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java   | 2 +-
 .../commands/SubmitAdaptiveExerciseToSkillifierTest.java  | 8 +++-----
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
index 558a4f0e..8ce0216d 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
@@ -38,7 +38,7 @@ public boolean isUnlocked() {
         return unlocked;
     }
 
-    public boolean shouldContain(Exercise exercise){
+    public boolean shouldContain(Exercise exercise) {
         return exercise.getName().contains(this.name);
     }
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index d0f3634f..eb8c2093 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -3,14 +3,11 @@
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verifyZeroInteractions;
 import static org.mockito.Mockito.when;
 
-import com.google.common.base.Optional;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
-import fi.helsinki.cs.tmc.core.communication.http.HttpTasks;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
@@ -23,6 +20,8 @@
 import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutorImpl;
 
+import com.google.common.base.Optional;
+
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -34,7 +33,6 @@
 import java.net.URI;
 import java.nio.file.Path;
 import java.util.Locale;
-import java.util.Map;
 import java.util.concurrent.Callable;
 
 
@@ -83,7 +81,7 @@ public void setUp() {
         settings.setToken(mockToken);
     }
 
-   @Test(timeout = 10000)
+    @Test(timeout = 10000)
     public void testCall() throws Exception {
 
         verifyZeroInteractions(mockObserver);

From 73578fa2b0fd6e44d8bceebf6135d52cf125831a Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Tue, 30 May 2017 10:07:14 +0300
Subject: [PATCH 085/113] tests for course and theme

---
 .../helsinki/cs/tmc/core/domain/Course.java   | 29 +++++++++++++------
 .../fi/helsinki/cs/tmc/core/domain/Theme.java |  6 ++++
 .../cs/tmc/core/domain/CourseTest.java        | 25 ++++++++++++++++
 3 files changed, 51 insertions(+), 9 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
index 00769dff..206028bb 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
@@ -95,17 +95,28 @@ public void generateThemes() {
         themes = new ArrayList<>();
         Map<String, Theme> themeMap = new HashMap<>();
         for (Exercise ex : exercises) {
-            String themeName = ex.getName().split("-")[0];
-            Theme theme = themeMap.get(themeName);
-            if (theme == null) {
-                theme = new Theme(themeName);
-                theme.getExercises().add(ex);
-                themeMap.put(themeName, theme);
-                themes.add(theme);
-            } else {
-                theme.getExercises().add(ex);
+            addExerciseToTheme(themeMap, ex);
+        }
+    }
+
+    private void addExerciseToTheme(Map<String, Theme> themeMap, Exercise ex) {
+        String themeName = ex.getName().split("-")[0];
+        Theme theme = themeMap.get(themeName);
+        if (theme == null) {
+            theme = new Theme(themeName);
+            themeMap.put(themeName, theme);
+            themes.add(theme);
+        }
+        theme.addExercise(ex);
+    }
+
+    public List<Exercise> getExercisesByTheme(String themeName) {
+        for (Theme theme : themes) {
+            if (theme.getName().equals(themeName)) {
+                return theme.getExercises();
             }
         }
+        return new ArrayList<>();
     }
 
     public int getId() {
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
index 558a4f0e..2c82e756 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
@@ -1,5 +1,6 @@
 package fi.helsinki.cs.tmc.core.domain;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -12,6 +13,7 @@ public class Theme {
 
     public Theme(String name) {
         this.name = name;
+        this.exercises = new ArrayList<>();
     }
 
     public List<Exercise> getExercises() {
@@ -42,4 +44,8 @@ public boolean shouldContain(Exercise exercise){
         return exercise.getName().contains(this.name);
     }
 
+    public void addExercise(Exercise exercise) {
+        exercises.add(exercise);
+    }
+
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/domain/CourseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/domain/CourseTest.java
index c965d27c..6734c743 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/domain/CourseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/domain/CourseTest.java
@@ -103,4 +103,29 @@ public void hashCodeGeneratedFromId() {
         c2.setId(1);
         assertTrue(courses.contains(c2));
     }
+
+    @Test
+    public void courseExercisesAreDividedIntoThemesCorrectly() {
+        exercises = new ArrayList<>();
+        exercises.add(new Exercise("viikko1-testi"));
+        exercises.add(new Exercise("viikko2-testi"));
+        exercises.add(new Exercise("viikko3-testi"));
+        course.setExercises(exercises);
+        course.generateThemes();
+        assertEquals(3,course.getExercises().size());
+    }
+
+    @Test
+    public void returnExercisesByThemeTest() {
+        exercises = new ArrayList<>();
+        exercises.add(new Exercise("viikko1-testi"));
+        exercises.add(new Exercise("viikko1-testi"));
+        exercises.add(new Exercise("viikko3-testi"));
+        course.setExercises(exercises);
+        course.generateThemes();
+        assertEquals(2, course.getExercisesByTheme("viikko1").size());
+        assertEquals(1, course.getExercisesByTheme("viikko3").size());
+    }
+
+
 }

From 54cbe3529a1ed4e4fbe5178e3bc423930694fb49 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Tue, 30 May 2017 11:18:17 +0300
Subject: [PATCH 086/113] added exercise adaptivity

---
 .../cs/tmc/core/commands/DownloadAdaptiveExercise.java   | 1 +
 .../java/fi/helsinki/cs/tmc/core/domain/Exercise.java    | 9 +++++++++
 2 files changed, 10 insertions(+)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 034610f1..a1bf7e56 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -33,6 +33,7 @@ public Exercise call() throws Exception {
             return null;
         }
         exercise.setCourseName("None");
+        exercise.setAdaptive(true);
         byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
         //checkInterrupt();
         Progress progress = new Progress(3);
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Exercise.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Exercise.java
index 6dc0513b..09634b81 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/Exercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Exercise.java
@@ -25,6 +25,7 @@ public class Exercise implements Serializable {
     private int id;
     private String name;
     private boolean locked;
+    private boolean isAdaptive = false;
 
     @SerializedName("deadline_description")
     private String deadlineDescription;
@@ -258,6 +259,14 @@ public void setExerciseSubmissionsUrl(URI exerciseSubmissionsUrl) {
         this.exerciseSubmissionsUrl = exerciseSubmissionsUrl;
     }
 
+    public boolean isAdaptive() {
+        return isAdaptive;
+    }
+
+    public void setAdaptive(boolean adaptive) {
+        isAdaptive = adaptive;
+    }
+
     private String courseName;
 
     // Zip contains folder for the exercise.

From f81e3b781c63993f0c41459b8ae50dcae459de71 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Tue, 30 May 2017 13:48:47 +0300
Subject: [PATCH 087/113] deleted adaptive exercise class, added availability
 attribute to normal exercise

---
 .../commands/DownloadAdaptiveExercise.java    |  3 +--
 .../SubmitAdaptiveExerciseToSkillifier.java   |  3 +--
 .../TmcServerCommunicationTaskFactory.java    |  7 +++---
 .../serialization/AdaptiveExerciseParser.java |  8 +++----
 .../cs/tmc/core/domain/AdaptiveExercise.java  | 23 -------------------
 .../helsinki/cs/tmc/core/domain/Exercise.java | 10 ++++++++
 .../DownloadAdaptiveExerciseTest.java         |  5 ++--
 .../AdaptiveExerciseParserTest.java           |  8 +++++++
 .../tmc/core/domain/AdaptiveExerciseTest.java | 20 ----------------
 9 files changed, 29 insertions(+), 58 deletions(-)
 delete mode 100644 src/main/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExercise.java
 delete mode 100644 src/test/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExerciseTest.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index a1bf7e56..6cefd02a 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -1,7 +1,6 @@
 package fi.helsinki.cs.tmc.core.commands;
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
-import fi.helsinki.cs.tmc.core.domain.AdaptiveExercise;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.Progress;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
@@ -28,7 +27,7 @@ public DownloadAdaptiveExercise(ProgressObserver observer) {
     @Override
     public Exercise call() throws Exception {
         logger.info("Checking adaptive exercises availability");
-        AdaptiveExercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
+        Exercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
         if (exercise == null) {
             return null;
         }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index 65ed6a91..b6000d47 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -1,7 +1,6 @@
 package fi.helsinki.cs.tmc.core.commands;
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
-import fi.helsinki.cs.tmc.core.domain.AdaptiveExercise;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.domain.submission.AdaptiveSubmissionResult;
@@ -25,7 +24,7 @@ public class SubmitAdaptiveExerciseToSkillifier extends AbstractSubmissionComman
 
     public SubmitAdaptiveExerciseToSkillifier(ProgressObserver observer, String exerciseName) {
         super(observer);
-        this.exercise = new AdaptiveExercise();
+        this.exercise = new Exercise();
         exercise.setName(exerciseName);
     }
 
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 9dc0d898..5d38420c 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -9,7 +9,6 @@
 import fi.helsinki.cs.tmc.core.communication.serialization.CourseListParser;
 import fi.helsinki.cs.tmc.core.communication.serialization.ReviewListParser;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
-import fi.helsinki.cs.tmc.core.domain.AdaptiveExercise;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.OauthCredentials;
@@ -152,11 +151,11 @@ public URI getSkillifierUrl(String addition) {
         return URI.create("http://tmc-adapt.testmycode.io/Example/default/");
     }
 
-    public Callable<AdaptiveExercise> getAdaptiveExercise()
+    public Callable<Exercise> getAdaptiveExercise()
         throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
-        return wrapWithNotLoggedInException(new Callable<AdaptiveExercise>() {
+        return wrapWithNotLoggedInException(new Callable<Exercise>() {
             @Override
-            public AdaptiveExercise call() throws Exception {
+            public Exercise call() throws Exception {
                 try {
                     Callable<String> download = new HttpTasks()
                                         .getForText(getSkillifierUrl("next.json?username=" + oauth.getToken()));
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index 627583ad..e052849c 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -1,6 +1,6 @@
 package fi.helsinki.cs.tmc.core.communication.serialization;
 
-import fi.helsinki.cs.tmc.core.domain.AdaptiveExercise;
+import fi.helsinki.cs.tmc.core.domain.Exercise;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
@@ -14,7 +14,7 @@ public class AdaptiveExerciseParser {
     
     private static final Logger logger = LoggerFactory.getLogger(AdaptiveExerciseParser.class);
 
-    public AdaptiveExercise parseFromJson(String json) {
+    public Exercise parseFromJson(String json) {
         if (json == null) {
             throw new NullPointerException("Json string is null");
         }
@@ -27,8 +27,8 @@ public AdaptiveExercise parseFromJson(String json) {
         }
         try {
             Gson gson = new GsonBuilder().create();
-            AdaptiveExercise adaptive = gson.fromJson(json, AdaptiveExercise.class);
-            if (adaptive.getAvailable()) {
+            Exercise adaptive = gson.fromJson(json, Exercise.class);
+            if (adaptive.isAvailable()) {
                 String parsedUrl = adaptive.getZipUrl().toString();
                 adaptive.setZipUrl(URI.create("http://" + parsedUrl));
                 return adaptive;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExercise.java
deleted file mode 100644
index b7634970..00000000
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExercise.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package fi.helsinki.cs.tmc.core.domain;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.Serializable;
-
-public class AdaptiveExercise extends Exercise implements Serializable {
-    
-    private static final Logger logger = LoggerFactory.getLogger(AdaptiveExercise.class);
-    //private static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSX";
-    
-    private boolean available;
-    
-    public Boolean getAvailable() {
-        return available;
-    }
-    
-    public void setAvailable(boolean available) {
-        this.available = available;
-    }
-    
-}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Exercise.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Exercise.java
index 09634b81..633902ee 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/Exercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Exercise.java
@@ -77,6 +77,8 @@ public class Exercise implements Serializable {
     @SerializedName("exercise_submissions_url")
     private URI exerciseSubmissionsUrl;
 
+    private boolean available;
+
     public Exercise() {}
 
     public Exercise(String name) {
@@ -267,6 +269,14 @@ public void setAdaptive(boolean adaptive) {
         isAdaptive = adaptive;
     }
 
+    public void setAvailable(boolean available) {
+        this.available = available;
+    }
+
+    public boolean isAvailable() {
+        return available;
+    }
+
     private String courseName;
 
     // Zip contains folder for the exercise.
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index 2520d287..b3cac3fb 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -13,7 +13,6 @@
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
-import fi.helsinki.cs.tmc.core.domain.AdaptiveExercise;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
@@ -53,9 +52,9 @@ public class DownloadAdaptiveExerciseTest {
     @Mock
     Course mockCourse;
     @Mock
-    AdaptiveExercise mockExerciseOne;
+    Exercise mockExerciseOne;
     @Mock
-    Callable<AdaptiveExercise> mockGetAdaptiveExercise;
+    Callable<Exercise> mockGetAdaptiveExercise;
     @Mock
     Oauth oauth;
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
index e492da95..0a12c17b 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/AdaptiveExerciseParserTest.java
@@ -8,6 +8,8 @@
 import org.junit.Before;
 import org.junit.Test;
 
+import java.net.URI;
+
 public class AdaptiveExerciseParserTest {
 
     private AdaptiveExerciseParser adaptiveParser;
@@ -32,4 +34,10 @@ public void exerciseNotAvailable() {
         Exercise exercise = adaptiveParser.parseFromJson("{ available: false, zip_url: additionToString }");
         assertEquals(exercise, null);
     }
+
+    @Test
+    public void exersiceAvailableTest() {
+        Exercise exercise = adaptiveParser.parseFromJson("{available: true, zip_url: additionToString }");
+        assertEquals(URI.create("http://additionToString"), exercise.getZipUrl());
+    }
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExerciseTest.java
deleted file mode 100644
index daae265b..00000000
--- a/src/test/java/fi/helsinki/cs/tmc/core/domain/AdaptiveExerciseTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package fi.helsinki.cs.tmc.core.domain;
-
-import static org.junit.Assert.assertTrue;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-
-import org.junit.Test;
-
-public class AdaptiveExerciseTest {
-    
-    @Test
-    public void testParsingFromJson() {
-        String json = "{available:true, zip_url:none}";
-        Gson gson = new GsonBuilder().create();
-        AdaptiveExercise adaptive = gson.fromJson(json, AdaptiveExercise.class);
-        assertTrue(adaptive.getAvailable());
-    }
-    
-}

From 9f2c92b5309f6b7aef6b9a615927e4e3bb260f83 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Wed, 31 May 2017 15:53:12 +0300
Subject: [PATCH 088/113] course details from skillifier

---
 .../core/commands/DownloadAdaptiveExercise.java | 17 ++++++++++++-----
 .../TmcServerCommunicationTaskFactory.java      | 14 +++++++++++---
 .../commands/DownloadAdaptiveExerciseTest.java  |  6 ------
 .../SubmitAdaptiveExerciseToSkillifierTest.java |  2 +-
 4 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 6cefd02a..82f1a6fb 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -4,7 +4,7 @@
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.Progress;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
-
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 
 import com.google.common.annotations.VisibleForTesting;
 
@@ -28,11 +28,18 @@ public DownloadAdaptiveExercise(ProgressObserver observer) {
     public Exercise call() throws Exception {
         logger.info("Checking adaptive exercises availability");
         Exercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
-        if (exercise == null) {
-            return null;
+        if (true) { //skillfier ei toimi
+            if (exercise == null) {
+                return null;
+            }
+            try {
+                exercise.setCourseName(TmcSettingsHolder.get().getCurrentCourse().get().getName());
+            } catch (Exception e) {
+                exercise.setCourseName("None");
+            }
+            exercise.setReturnable(true);
+            exercise.setAdaptive(true);
         }
-        exercise.setCourseName("None");
-        exercise.setAdaptive(true);
         byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
         //checkInterrupt();
         Progress progress = new Progress(3);
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 5d38420c..530ca506 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -37,6 +37,7 @@
 import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.net.URI;
+import java.net.URL;
 import java.nio.charset.Charset;
 import java.util.Collections;
 import java.util.HashMap;
@@ -190,10 +191,17 @@ public Callable<Course> getFullCourseInfoTask(final Course courseStub) {
             @Override
             public Course call() throws Exception {
                 try {
-                    URI url = addApiCallQueryParameters(courseStub.getDetailsUrl());
-                    final Callable<String> download = new HttpTasks().getForText(url);
+                    URI serverUrl = addApiCallQueryParameters(courseStub.getDetailsUrl());
+                    //URI skillfierUrl = URI.create("http://courses/"+courseStub.getName()+"/exercises");
+                    final Callable<String> download = new HttpTasks().getForText(serverUrl);
+                    //final Callable<String> downloadSkillfier = new HttpTasks().getForText(skillfierUrl);
                     String text = download.call();
-                    return courseInfoParser.parseFromJson(text);
+                    //String skillfierText = downloadSkillfier.call();
+                    Course returnedCourseServer = courseInfoParser.parseFromJson(text);
+                    //Course returnFromSkillifier = courseInfoParser.parseFromJson(skillfierText);
+                    //returnedCourseServer.getExercises().addAll(returnFromSkillifier.getExercises());
+
+                    return returnedCourseServer;
                 } catch (FailedHttpResponseException ex) {
                     return checkForObsoleteClient(ex);
                 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index b3cac3fb..31de7a7c 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -77,12 +77,6 @@ public void setUp() throws IOException {
 
     }
 
-    @Test
-    public void checkExerciseZipUrl() throws Exception {
-        setUpMocks();
-        Exercise exercise = command.call();
-    }
-
     @Test
     public void testDownloadAndExtractSuccess() throws Exception {
         setUpMocks();
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index eb8c2093..81038a1e 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -71,7 +71,7 @@ public void setUp() {
         langs = spy(new TaskExecutorImpl());
         TmcLangsHolder.set(langs);
         TmcSettingsHolder.set(settings);
-        Exercise ex = new Exercise("Osa01_01.WilliamLovelace", "Example");
+        Exercise ex = new Exercise("Osa02_01.WilliamLovelace", "Example");
         command = new SubmitAdaptiveExerciseToSkillifier(mockObserver, ex, new TmcServerCommunicationTaskFactory());
 
         arithFuncsTempDir = TestUtils.getProject(this.getClass(), "arith_funcs");

From 819ebc79923d4d924af4ef3185b425e5cee87706 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Thu, 1 Jun 2017 15:45:12 +0300
Subject: [PATCH 089/113] submit works

---
 .../SubmitAdaptiveExerciseToSkillifier.java   |  4 ++++
 .../TmcServerCommunicationTaskFactory.java    | 19 ++++++++++++++-----
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index b6000d47..1fab0112 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -1,6 +1,7 @@
 package fi.helsinki.cs.tmc.core.commands;
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.communication.http.HttpTasks;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.domain.submission.AdaptiveSubmissionResult;
@@ -11,6 +12,7 @@
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 
+import org.apache.http.HttpRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -48,6 +50,8 @@ public SubmissionResult call() {
         String networkResult = "";
         try {
             networkResult = tmcServerCommunicationTaskFactory.getSubmissionFetchTask(submissionUrl).call();
+            String str = tmcServerCommunicationTaskFactory.getSubmissionFetchTask(URI.create("http://localhost:3000/courses/name/exercises/"+exercise.getName()+"/complete?username=asd).call()")).call();
+            
             logger.info("network result: {}", networkResult);
         } catch (Exception e) {
             informObserver(1, "Error while waiting for response from server");
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 530ca506..cc3e9451 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -39,11 +39,14 @@
 import java.net.URI;
 import java.net.URL;
 import java.nio.charset.Charset;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -192,14 +195,20 @@ public Callable<Course> getFullCourseInfoTask(final Course courseStub) {
             public Course call() throws Exception {
                 try {
                     URI serverUrl = addApiCallQueryParameters(courseStub.getDetailsUrl());
-                    //URI skillfierUrl = URI.create("http://courses/"+courseStub.getName()+"/exercises");
+                    URI skillfierUrl = URI.create("http://localhost:3000/courses/"+courseStub.getName()+"/exercises");
                     final Callable<String> download = new HttpTasks().getForText(serverUrl);
-                    //final Callable<String> downloadSkillfier = new HttpTasks().getForText(skillfierUrl);
+                    final Callable<String> downloadSkillfier = new HttpTasks().getForText(skillfierUrl);
                     String text = download.call();
-                    //String skillfierText = downloadSkillfier.call();
+                    String skillfierText = downloadSkillfier.call();
                     Course returnedCourseServer = courseInfoParser.parseFromJson(text);
-                    //Course returnFromSkillifier = courseInfoParser.parseFromJson(skillfierText);
-                    //returnedCourseServer.getExercises().addAll(returnFromSkillifier.getExercises());
+                    Course returnFromSkillifier = courseInfoParser.parseFromJson(skillfierText);
+                    returnedCourseServer.getExercises().addAll(returnFromSkillifier.getExercises());
+                    /*
+                    Set<Exercise> exercises = new HashSet<>();
+                    exercises.addAll(returnedCourseServer.getExercises());
+                    exercises.addAll(courseStub.getExercises());
+                    returnedCourseServer.setExercises(new ArrayList<>(exercises));
+                    */
 
                     return returnedCourseServer;
                 } catch (FailedHttpResponseException ex) {

From 3ad0e6cdfcc5840e242e8974dd2982c1a5fb7b00 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Fri, 2 Jun 2017 13:51:37 +0300
Subject: [PATCH 090/113] download by theme, refactoring

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |  7 +++
 .../DownloadAdaptiveExerciseByTheme.java      | 50 +++++++++++++++++++
 .../TmcServerCommunicationTaskFactory.java    | 47 +++++++++++------
 .../DownloadAdaptiveExerciseTest.java         |  7 ++-
 ...ubmitAdaptiveExerciseToSkillifierTest.java |  2 +-
 5 files changed, 95 insertions(+), 18 deletions(-)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index da8e4b01..8d461fc5 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -2,6 +2,7 @@
 
 import fi.helsinki.cs.tmc.core.commands.AuthenticateUser;
 import fi.helsinki.cs.tmc.core.commands.DownloadAdaptiveExercise;
+import fi.helsinki.cs.tmc.core.commands.DownloadAdaptiveExerciseByTheme;
 import fi.helsinki.cs.tmc.core.commands.DownloadCompletedExercises;
 import fi.helsinki.cs.tmc.core.commands.DownloadModelSolution;
 import fi.helsinki.cs.tmc.core.commands.DownloadOrUpdateExercises;
@@ -28,6 +29,7 @@
 import fi.helsinki.cs.tmc.core.domain.Organization;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.domain.Review;
+import fi.helsinki.cs.tmc.core.domain.Theme;
 import fi.helsinki.cs.tmc.core.domain.submission.FeedbackAnswer;
 import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
@@ -185,6 +187,11 @@ public Callable<Exercise> downloadAdaptiveExercise(ProgressObserver observer) {
         logger.info("Creating new DownloadAdaptiveExercise command");
         return new ExceptionTrackingCallable<>(new DownloadAdaptiveExercise(observer));
     }
+
+    public Callable<Exercise> downloadAdaptiveExerciseByTheme(ProgressObserver observer, Theme theme) {
+        logger.info("Creating new DownloadAdaptiveExerciseByTheme command");
+        return new ExceptionTrackingCallable<>(new DownloadAdaptiveExerciseByTheme(observer, theme));
+    }
     
     /**
      * NOT IMPLEMENTED!
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
new file mode 100644
index 00000000..f6c18839
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
@@ -0,0 +1,50 @@
+package fi.helsinki.cs.tmc.core.commands;
+
+import fi.helsinki.cs.tmc.core.domain.Exercise;
+import fi.helsinki.cs.tmc.core.domain.Progress;
+import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.domain.Theme;
+import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.concurrent.Callable;
+
+/**
+ * Created by markovai on 2.6.2017.
+ */
+public class DownloadAdaptiveExerciseByTheme extends ExerciseDownloadingCommand<Exercise> {
+
+    private static final Logger logger = LoggerFactory.getLogger(DownloadAdaptiveExercise.class);
+
+    private Theme theme;
+    public DownloadAdaptiveExerciseByTheme(ProgressObserver observer, Theme theme) {
+        super(observer);
+        this.theme = theme;
+    }
+
+    @Override
+    public Exercise call() throws Exception {
+        logger.info("Checking adaptive exercises availability by theme");
+        Exercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExercisyByTheme(theme).call();
+        /*
+        if (true) { //skillfier ei toimi
+            if (exercise == null) {
+                return null;
+            }
+            try {
+                exercise.setCourseName(TmcSettingsHolder.get().getCurrentCourse().get().getName());
+            } catch (Exception e) {
+                exercise.setCourseName("None");
+            }
+            exercise.setReturnable(true);
+            exercise.setAdaptive(true);
+        }
+        */
+        byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
+        //checkInterrupt();
+        Progress progress = new Progress(3);
+        extractProject(zipb, exercise, progress);
+        return exercise;
+    }
+}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index cc3e9451..455e24a6 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -14,6 +14,7 @@
 import fi.helsinki.cs.tmc.core.domain.OauthCredentials;
 import fi.helsinki.cs.tmc.core.domain.Organization;
 import fi.helsinki.cs.tmc.core.domain.Review;
+import fi.helsinki.cs.tmc.core.domain.Theme;
 import fi.helsinki.cs.tmc.core.domain.submission.FeedbackAnswer;
 import fi.helsinki.cs.tmc.core.exceptions.FailedHttpResponseException;
 import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
@@ -173,6 +174,24 @@ public Exercise call() throws Exception {
         });
     }
 
+    public Callable<Exercise> getAdaptiveExercisyByTheme(final Theme theme)
+        throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
+            return wrapWithNotLoggedInException(new Callable<Exercise>() {
+                @Override
+                public Exercise call() throws Exception {
+                    try {
+                        Callable<String> download = new HttpTasks()
+                            .getForText(getSkillifierUrl("theme/"+theme.getName()+"/next.json?username=" + oauth.getToken()));
+                        String json = download.call();
+                        return adaptiveExerciseParser.parseFromJson(json);
+                    } catch (Exception ex) {
+                        LOG.log(Level.WARNING, "Downloading and parsing adaptive exercise URL failed.");
+                        return null;
+                    }
+                }
+            });
+    }
+
     public Callable<List<Course>> getDownloadingCourseListTask() {
         return wrapWithNotLoggedInException(new Callable<List<Course>>() {
             @Override
@@ -195,22 +214,12 @@ public Callable<Course> getFullCourseInfoTask(final Course courseStub) {
             public Course call() throws Exception {
                 try {
                     URI serverUrl = addApiCallQueryParameters(courseStub.getDetailsUrl());
-                    URI skillfierUrl = URI.create("http://localhost:3000/courses/"+courseStub.getName()+"/exercises");
-                    final Callable<String> download = new HttpTasks().getForText(serverUrl);
-                    final Callable<String> downloadSkillfier = new HttpTasks().getForText(skillfierUrl);
-                    String text = download.call();
-                    String skillfierText = downloadSkillfier.call();
-                    Course returnedCourseServer = courseInfoParser.parseFromJson(text);
-                    Course returnFromSkillifier = courseInfoParser.parseFromJson(skillfierText);
-                    returnedCourseServer.getExercises().addAll(returnFromSkillifier.getExercises());
-                    /*
-                    Set<Exercise> exercises = new HashSet<>();
-                    exercises.addAll(returnedCourseServer.getExercises());
-                    exercises.addAll(courseStub.getExercises());
-                    returnedCourseServer.setExercises(new ArrayList<>(exercises));
-                    */
-
-                    return returnedCourseServer;
+                    //URI skillifierUrl = URI.create("http://localhost:3000/courses/"+courseStub.getName()+"/exercises");
+                    Course returnedFromServer = getCourseInfo(serverUrl);
+                    //Course returnedFromSkillifier = getCourseInfo(skillifierUrl);
+                    //returnedFromServer.getExercises().addAll(returnedFromSkillifier.getExercises());
+                    returnedFromServer.generateThemes();
+                    return returnedFromServer;
                 } catch (FailedHttpResponseException ex) {
                     return checkForObsoleteClient(ex);
                 }
@@ -220,6 +229,12 @@ public Course call() throws Exception {
         });
     }
 
+    private Course getCourseInfo(URI uri) throws Exception {
+        final Callable<String> downloadFromServer = new HttpTasks().getForText(uri);
+        String jsonFromServer = downloadFromServer.call();
+        return courseInfoParser.parseFromJson(jsonFromServer);
+    }
+
     public Callable<Void> getUnlockingTask(final Course course) {
         final Map<String, String> params = Collections.emptyMap();
         return wrapWithNotLoggedInException(new Callable<Void>() {
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index 31de7a7c..8c38cb40 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -10,7 +10,10 @@
 import static org.mockito.Mockito.verifyZeroInteractions;
 import static org.mockito.Mockito.when;
 
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.communication.http.HttpTasks;
 import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
@@ -34,9 +37,11 @@
 import org.mockito.Spy;
 
 import java.io.IOException;
+import java.net.URI;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.ArrayList;
 import java.util.concurrent.Callable;
 
 public class DownloadAdaptiveExerciseTest {
@@ -125,7 +130,7 @@ public byte[] call() throws Exception {
                         });
     }
 
-    @Test
+    //@Test
     public void testDownloadAndExtractSuccessWithRealZip() throws Exception {
         verifyZeroInteractions(langs);
         TmcServerCommunicationTaskFactory realFactory = new TmcServerCommunicationTaskFactory(settings, oauth);
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index 81038a1e..86a6db68 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -81,7 +81,7 @@ public void setUp() {
         settings.setToken(mockToken);
     }
 
-    @Test(timeout = 10000)
+    //@Test(timeout = 10000)
     public void testCall() throws Exception {
 
         verifyZeroInteractions(mockObserver);

From 8aab90cfb5f3d9e97ed9c7c67560e01ba9ae8262 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Fri, 2 Jun 2017 13:56:10 +0300
Subject: [PATCH 091/113] checkstyle

---
 .../cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java   | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index 8c38cb40..c08dac70 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -10,10 +10,7 @@
 import static org.mockito.Mockito.verifyZeroInteractions;
 import static org.mockito.Mockito.when;
 
-import com.google.common.reflect.TypeToken;
-import com.google.gson.Gson;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
-import fi.helsinki.cs.tmc.core.communication.http.HttpTasks;
 import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
@@ -37,11 +34,9 @@
 import org.mockito.Spy;
 
 import java.io.IOException;
-import java.net.URI;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.ArrayList;
 import java.util.concurrent.Callable;
 
 public class DownloadAdaptiveExerciseTest {

From d74305c20f80a1d82bb451a899af9664c22a0d7e Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Fri, 2 Jun 2017 15:11:08 +0300
Subject: [PATCH 092/113] enabled tests again

---
 .../cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java      | 2 +-
 .../core/commands/SubmitAdaptiveExerciseToSkillifierTest.java   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index c08dac70..31de7a7c 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -125,7 +125,7 @@ public byte[] call() throws Exception {
                         });
     }
 
-    //@Test
+    @Test
     public void testDownloadAndExtractSuccessWithRealZip() throws Exception {
         verifyZeroInteractions(langs);
         TmcServerCommunicationTaskFactory realFactory = new TmcServerCommunicationTaskFactory(settings, oauth);
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index 86a6db68..81038a1e 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -81,7 +81,7 @@ public void setUp() {
         settings.setToken(mockToken);
     }
 
-    //@Test(timeout = 10000)
+    @Test(timeout = 10000)
     public void testCall() throws Exception {
 
         verifyZeroInteractions(mockObserver);

From 23e4471a3b422e4053150312a122dfe8bc3efdc8 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Fri, 2 Jun 2017 17:10:04 +0300
Subject: [PATCH 093/113] fixed request urls

---
 .../DownloadAdaptiveExerciseByTheme.java      |  3 +-
 .../SubmitAdaptiveExerciseToSkillifier.java   |  7 ++--
 .../TmcServerCommunicationTaskFactory.java    | 39 ++++++++++---------
 3 files changed, 26 insertions(+), 23 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
index f6c18839..5fcb3d2e 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
@@ -4,7 +4,7 @@
 import fi.helsinki.cs.tmc.core.domain.Progress;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.domain.Theme;
-import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -18,6 +18,7 @@ public class DownloadAdaptiveExerciseByTheme extends ExerciseDownloadingCommand<
     private static final Logger logger = LoggerFactory.getLogger(DownloadAdaptiveExercise.class);
 
     private Theme theme;
+
     public DownloadAdaptiveExerciseByTheme(ProgressObserver observer, Theme theme) {
         super(observer);
         this.theme = theme;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index 1fab0112..fbf423c5 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -44,13 +44,14 @@ public SubmitAdaptiveExerciseToSkillifier(ProgressObserver observer, String exer
     public SubmissionResult call() {
         logger.info("Submitting exercise {}", exercise.getName());
         informObserver(0, "Submitting exercise to server");
-        URI submissionUrl = tmcServerCommunicationTaskFactory.getSkillifierUrl(exercise.getName()
-                + "/submit?username=" + TmcSettingsHolder.get().getToken().get());
+        URI submissionUrl = tmcServerCommunicationTaskFactory.getSkillifierUrl(
+                "/exercises/" + exercise.getName() + "/submit");
+                //+ "submit/?username=" + TmcSettingsHolder.get().getToken().get());
         logger.info("submissionurl: {}", submissionUrl.toString());
         String networkResult = "";
         try {
             networkResult = tmcServerCommunicationTaskFactory.getSubmissionFetchTask(submissionUrl).call();
-            String str = tmcServerCommunicationTaskFactory.getSubmissionFetchTask(URI.create("http://localhost:3000/courses/name/exercises/"+exercise.getName()+"/complete?username=asd).call()")).call();
+            //String str = tmcServerCommunicationTaskFactory.getSubmissionFetchTask(tmcServerCommunicationTaskFactory.getSkillifierUrl(("/exercises/"+exercise.getName()+"/complete?username=asd).call()"))).call();
             
             logger.info("network result: {}", networkResult);
         } catch (Exception e) {
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 455e24a6..d60ba5e9 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -59,7 +59,7 @@
 public class TmcServerCommunicationTaskFactory {
 
     private static final Logger LOG = Logger.getLogger(
-            TmcServerCommunicationTaskFactory.class.getName());
+                TmcServerCommunicationTaskFactory.class.getName());
     public static final int API_VERSION = 8;
 
     private TmcSettings settings;
@@ -80,12 +80,12 @@ public TmcServerCommunicationTaskFactory(TmcSettings settings, Oauth oauth) {
     }
 
     public TmcServerCommunicationTaskFactory(
-            TmcSettings settings,
-            Oauth oauth,
-            AdaptiveExerciseParser adaptiveExerciseParser,
-            CourseListParser courseListParser,
-            CourseInfoParser courseInfoParser,
-            ReviewListParser reviewListParser) {
+                TmcSettings settings,
+                Oauth oauth,
+                AdaptiveExerciseParser adaptiveExerciseParser,
+                CourseListParser courseListParser,
+                CourseInfoParser courseInfoParser,
+                ReviewListParser reviewListParser) {
         this.settings = settings;
         this.oauth = oauth;
         this.adaptiveExerciseParser = adaptiveExerciseParser;
@@ -105,10 +105,8 @@ public void setSettings(TmcSettings settings) {
 
     /**
      * Returns a Callable that calls the given Callable.
-     *
      * <p>
      * If the call fails once, the oauth token is refreshed and the call is done again.</p>
-     *
      * @param <T> return type of the callable
      * @param callable Callable to be wrapped
      * @return The given Callable wrapped in another Callable
@@ -121,7 +119,7 @@ public T call() throws Exception {
                     return callable.call();
                 } catch (FailedHttpResponseException e) {
                     LOG.log(Level.WARNING,
-                            "Communication with the server failed!");
+                                "Communication with the server failed!");
                     throw new NotLoggedInException();
                 }
             }
@@ -141,7 +139,7 @@ private URI getCourseListUrl()
         }
         return addApiCallQueryParameters(URI.create(url));
     }
-    
+
     private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
         url = UriUtils.withQueryParam(url, "client", settings.clientName());
         url = UriUtils.withQueryParam(url, "client_version", clientVersion);
@@ -151,9 +149,9 @@ private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
 
     public URI getSkillifierUrl(String addition) {
         if (!addition.isEmpty()) {
-            return URI.create("http://tmc-adapt.testmycode.io/Example/default/" + addition);
+            return URI.create("http://tmc-adapt.testmycode.io/" + addition);
         }
-        return URI.create("http://tmc-adapt.testmycode.io/Example/default/");
+        return URI.create("http://tmc-adapt.testmycode.io/");
     }
 
     public Callable<Exercise> getAdaptiveExercise()
@@ -163,7 +161,8 @@ public Callable<Exercise> getAdaptiveExercise()
             public Exercise call() throws Exception {
                 try {
                     Callable<String> download = new HttpTasks()
-                                        .getForText(getSkillifierUrl("next.json?username=" + oauth.getToken()));
+                            .getForText(getSkillifierUrl("Exercise/next.json"));
+                            //.getForText(getSkillifierUrl("next.json?username=" + oauth.getToken()));
                     String json = download.call();
                     return adaptiveExerciseParser.parseFromJson(json);
                 } catch (Exception ex) {
@@ -176,12 +175,12 @@ public Exercise call() throws Exception {
 
     public Callable<Exercise> getAdaptiveExercisyByTheme(final Theme theme)
         throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
-            return wrapWithNotLoggedInException(new Callable<Exercise>() {
+        return wrapWithNotLoggedInException(new Callable<Exercise>() {
                 @Override
                 public Exercise call() throws Exception {
                     try {
                         Callable<String> download = new HttpTasks()
-                            .getForText(getSkillifierUrl("theme/"+theme.getName()+"/next.json?username=" + oauth.getToken()));
+                                .getForText(getSkillifierUrl("theme/" + theme.getName() + "/next.json?username=" + oauth.getToken()));
                         String json = download.call();
                         return adaptiveExerciseParser.parseFromJson(json);
                     } catch (Exception ex) {
@@ -214,10 +213,12 @@ public Callable<Course> getFullCourseInfoTask(final Course courseStub) {
             public Course call() throws Exception {
                 try {
                     URI serverUrl = addApiCallQueryParameters(courseStub.getDetailsUrl());
-                    //URI skillifierUrl = URI.create("http://localhost:3000/courses/"+courseStub.getName()+"/exercises");
                     Course returnedFromServer = getCourseInfo(serverUrl);
-                    //Course returnedFromSkillifier = getCourseInfo(skillifierUrl);
-                    //returnedFromServer.getExercises().addAll(returnedFromSkillifier.getExercises());
+
+                    URI skillifierUrl = getSkillifierUrl("/course/" + courseStub.getName());
+                    Course returnedFromSkillifier = getCourseInfo(skillifierUrl);
+                    returnedFromServer.getExercises().addAll(returnedFromSkillifier.getExercises());
+
                     returnedFromServer.generateThemes();
                     return returnedFromServer;
                 } catch (FailedHttpResponseException ex) {

From ddbafeebad097518473ba1fef605bb3ddb9623d1 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Sun, 4 Jun 2017 11:50:59 +0300
Subject: [PATCH 094/113] tests no longer use the server

---
 .../DownloadAdaptiveExerciseTest.java         | 14 ----------
 ...ubmitAdaptiveExerciseToSkillifierTest.java | 28 +++++++++++++++++--
 2 files changed, 25 insertions(+), 17 deletions(-)

diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index 31de7a7c..658b189d 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -125,18 +125,4 @@ public byte[] call() throws Exception {
                         });
     }
 
-    @Test
-    public void testDownloadAndExtractSuccessWithRealZip() throws Exception {
-        verifyZeroInteractions(langs);
-        TmcServerCommunicationTaskFactory realFactory = new TmcServerCommunicationTaskFactory(settings, oauth);
-        assertNotNull(TmcSettingsHolder.get());
-        command = new DownloadAdaptiveExercise(mockObserver, realFactory);
-        Path testPath = Paths.get(System.getProperty("user.dir"));
-
-        when(settings.getTmcProjectDirectory()).thenReturn(testPath);
-
-        Exercise exercise = command.call();
-        assertTrue(Files.exists(testPath.resolve(exercise.getCourseName())));
-        FileUtils.deleteDirectory(testPath.resolve(exercise.getCourseName()).toFile());
-    }
 }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index 81038a1e..095ca197 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -2,6 +2,7 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verifyZeroInteractions;
@@ -56,7 +57,7 @@ public class SubmitAdaptiveExerciseToSkillifierTest {
     private static final TmcServerCommunicationTaskFactory.SubmissionResponse STUB_RESPONSE =
             new TmcServerCommunicationTaskFactory.SubmissionResponse(SUBMISSION_URI, PASTE_URI);
 
-    private static final String STUB_PROSESSING_RESPONSE = "{status: \"processing\"}";
+    private static final String STUB_PROSESSING_ERRORED_RESPONSE = "{error: \"failed to submit the exercise\"}";
     private static final String STUB_PROSESSING_DONE_RESPONSE = "{status: \"OK\"}";
 
     private Command<SubmissionResult> command;
@@ -72,17 +73,19 @@ public void setUp() {
         TmcLangsHolder.set(langs);
         TmcSettingsHolder.set(settings);
         Exercise ex = new Exercise("Osa02_01.WilliamLovelace", "Example");
-        command = new SubmitAdaptiveExerciseToSkillifier(mockObserver, ex, new TmcServerCommunicationTaskFactory());
+        command = new SubmitAdaptiveExerciseToSkillifier(mockObserver, ex, factory);
 
         arithFuncsTempDir = TestUtils.getProject(this.getClass(), "arith_funcs");
         when(mockExercise.getExerciseDirectory(any(Path.class))).thenReturn(arithFuncsTempDir);
         when(settings.getLocale()).thenReturn(new Locale("FI"));
         Optional<String> mockToken = Optional.of("testToken");
         settings.setToken(mockToken);
+
+        when(factory.getSkillifierUrl(anyString())).thenReturn(URI.create("www.someurl.com"));
     }
 
     @Test(timeout = 10000)
-    public void testCall() throws Exception {
+    public void testSuccessfulSubmit() throws Exception {
 
         verifyZeroInteractions(mockObserver);
         doReturn(new byte[0]).when(langs).compressProject(any(Path.class));
@@ -100,4 +103,23 @@ public String call() throws Exception {
         assertEquals(SubmissionResult.Status.OK, result.getStatus());
     }
 
+    @Test(timeout = 10000)
+    public void testUnsuccessfulSubmit() throws Exception {
+
+        verifyZeroInteractions(mockObserver);
+        doReturn(new byte[0]).when(langs).compressProject(any(Path.class));
+        when(factory.getSubmissionFetchTask(any(URI.class)))
+            .thenReturn(
+                new Callable<String>() {
+                    @Override
+                    public String call() throws Exception {
+                        return STUB_PROSESSING_ERRORED_RESPONSE;
+                    }
+                });
+
+        SubmissionResult result = command.call();
+
+        assertEquals(SubmissionResult.Status.ERROR, result.getStatus());
+        assertEquals("failed to submit the exercise", result.getError());
+    }
 }

From 0e4887aa1e0a2c6963531e04d2221a1573335c75 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Mon, 5 Jun 2017 09:40:15 +0300
Subject: [PATCH 095/113] url fixes

---
 .../SubmitAdaptiveExerciseToSkillifier.java    |  4 ++--
 .../TmcServerCommunicationTaskFactory.java     | 18 ++++++++++++------
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index fbf423c5..f640d97c 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -45,8 +45,8 @@ public SubmissionResult call() {
         logger.info("Submitting exercise {}", exercise.getName());
         informObserver(0, "Submitting exercise to server");
         URI submissionUrl = tmcServerCommunicationTaskFactory.getSkillifierUrl(
-                "/exercises/" + exercise.getName() + "/submit");
-                //+ "submit/?username=" + TmcSettingsHolder.get().getToken().get());
+                //"/exercises/" + exercise.getName() + "/submit");
+                "/Example/default/" + exercise.getName() +  "/submit/?username=" + TmcSettingsHolder.get().getToken().get());
         logger.info("submissionurl: {}", submissionUrl.toString());
         String networkResult = "";
         try {
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index d60ba5e9..80718f7f 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -161,8 +161,8 @@ public Callable<Exercise> getAdaptiveExercise()
             public Exercise call() throws Exception {
                 try {
                     Callable<String> download = new HttpTasks()
-                            .getForText(getSkillifierUrl("Exercise/next.json"));
-                            //.getForText(getSkillifierUrl("next.json?username=" + oauth.getToken()));
+                            //.getForText(getSkillifierUrl("Exercise/next.json"));
+                            .getForText(getSkillifierUrl("/Example/default/next.json?username=" + oauth.getToken()));
                     String json = download.call();
                     return adaptiveExerciseParser.parseFromJson(json);
                 } catch (Exception ex) {
@@ -215,10 +215,16 @@ public Course call() throws Exception {
                     URI serverUrl = addApiCallQueryParameters(courseStub.getDetailsUrl());
                     Course returnedFromServer = getCourseInfo(serverUrl);
 
-                    URI skillifierUrl = getSkillifierUrl("/course/" + courseStub.getName());
-                    Course returnedFromSkillifier = getCourseInfo(skillifierUrl);
-                    returnedFromServer.getExercises().addAll(returnedFromSkillifier.getExercises());
-
+                    try {
+                        URI skillifierUrl = getSkillifierUrl("/course/" + courseStub.getName());
+                        Course returnedFromSkillifier = getCourseInfo(skillifierUrl);
+                        returnedFromServer.getExercises().addAll(returnedFromSkillifier.getExercises());
+                    } catch (Exception e) {
+                        LOG.log(Level.WARNING, "Downloading adaptive exercise info from skillifier failed.");
+                    }
+                    Set<Exercise> set = new HashSet<>(returnedFromServer.getExercises());
+                    set.addAll(courseStub.getExercises());
+                    returnedFromServer.setExercises(new ArrayList<Exercise>(set));
                     returnedFromServer.generateThemes();
                     return returnedFromServer;
                 } catch (FailedHttpResponseException ex) {

From eaf206710637c1c603bfb75c8c31ecf361dbf02d Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Mon, 5 Jun 2017 09:45:18 +0300
Subject: [PATCH 096/113] submit uses exercise instead of only name

---
 src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java           | 4 ++--
 .../core/commands/SubmitAdaptiveExerciseToSkillifier.java    | 5 ++---
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 8d461fc5..5326c76e 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -151,9 +151,9 @@ public Callable<SubmissionResult> submit(ProgressObserver observer, Exercise exe
         return new ExceptionTrackingCallable<>(new Submit(observer, exercise));
     }
     
-    public Callable<SubmissionResult> submitAdaptiveExercise(ProgressObserver observer, String exerciseName) {
+    public Callable<SubmissionResult> submitAdaptiveExercise(ProgressObserver observer, Exercise exercise) {
         logger.info("Creating new submit adaptiveExercise command");
-        return new ExceptionTrackingCallable<>(new SubmitAdaptiveExerciseToSkillifier(observer, exerciseName));
+        return new ExceptionTrackingCallable<>(new SubmitAdaptiveExerciseToSkillifier(observer, exercise));
     }
 
     public Callable<GetUpdatableExercises.UpdateResult> getExerciseUpdates(
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index f640d97c..5e50fba4 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -24,10 +24,9 @@ public class SubmitAdaptiveExerciseToSkillifier extends AbstractSubmissionComman
 
     private Exercise exercise;
 
-    public SubmitAdaptiveExerciseToSkillifier(ProgressObserver observer, String exerciseName) {
+    public SubmitAdaptiveExerciseToSkillifier(ProgressObserver observer, Exercise exercise) {
         super(observer);
-        this.exercise = new Exercise();
-        exercise.setName(exerciseName);
+        this.exercise = exercise;
     }
 
     @VisibleForTesting

From f698187ec873ec2dd0d18716a2d7fa4d91d03abd Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Mon, 5 Jun 2017 10:54:38 +0300
Subject: [PATCH 097/113] fixed theme of exercise

---
 .../core/communication/TmcServerCommunicationTaskFactory.java   | 1 +
 src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java         | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 80718f7f..6216eac5 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -222,6 +222,7 @@ public Course call() throws Exception {
                     } catch (Exception e) {
                         LOG.log(Level.WARNING, "Downloading adaptive exercise info from skillifier failed.");
                     }
+
                     Set<Exercise> set = new HashSet<>(returnedFromServer.getExercises());
                     set.addAll(courseStub.getExercises());
                     returnedFromServer.setExercises(new ArrayList<Exercise>(set));
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
index 787712c6..e2476392 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
@@ -41,7 +41,7 @@ public boolean isUnlocked() {
     }
 
     public boolean shouldContain(Exercise exercise) {
-        return exercise.getName().contains(this.name);
+        return this.name.equals(exercise.getName().split("-")[0]);
     }
 
     public void addExercise(Exercise exercise) {

From b9fb14fd5045e1398c2e1e60325e17a100f734ff Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Mon, 5 Jun 2017 13:38:02 +0300
Subject: [PATCH 098/113] refactoring

---
 .../TmcServerCommunicationTaskFactory.java             | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 6216eac5..50c26075 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -223,9 +223,7 @@ public Course call() throws Exception {
                         LOG.log(Level.WARNING, "Downloading adaptive exercise info from skillifier failed.");
                     }
 
-                    Set<Exercise> set = new HashSet<>(returnedFromServer.getExercises());
-                    set.addAll(courseStub.getExercises());
-                    returnedFromServer.setExercises(new ArrayList<Exercise>(set));
+                    addAdaptiveExercisesFromStub(returnedFromServer, courseStub);
                     returnedFromServer.generateThemes();
                     return returnedFromServer;
                 } catch (FailedHttpResponseException ex) {
@@ -237,6 +235,12 @@ public Course call() throws Exception {
         });
     }
 
+    private void addAdaptiveExercisesFromStub(Course returnedFromServer, Course courseStub) {
+        Set<Exercise> set = new HashSet<>(returnedFromServer.getExercises());
+        set.addAll(courseStub.getExercises());
+        returnedFromServer.setExercises(new ArrayList<Exercise>(set));
+    }
+
     private Course getCourseInfo(URI uri) throws Exception {
         final Callable<String> downloadFromServer = new HttpTasks().getForText(uri);
         String jsonFromServer = downloadFromServer.call();

From cde1a1428a2d6f62f118282b9eb05ce889939bfe Mon Sep 17 00:00:00 2001
From: fogre <antti.kotiranta@helsinki.fi>
Date: Thu, 8 Jun 2017 13:54:49 +0300
Subject: [PATCH 099/113] Added exerciseLisstParser

---
 .../TmcServerCommunicationTaskFactory.java    | 15 +++++--
 .../serialization/ExerciseListParser.java     | 42 +++++++++++++++++++
 2 files changed, 53 insertions(+), 4 deletions(-)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/ExerciseListParser.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 50c26075..e60df6c9 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -29,6 +29,7 @@
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.google.gson.reflect.TypeToken;
+import fi.helsinki.cs.tmc.core.communication.serialization.ExerciseListParser;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
@@ -38,7 +39,6 @@
 import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.net.URI;
-import java.net.URL;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -67,6 +67,7 @@ public class TmcServerCommunicationTaskFactory {
     private AdaptiveExerciseParser adaptiveExerciseParser;
     private CourseListParser courseListParser;
     private CourseInfoParser courseInfoParser;
+    private ExerciseListParser exerciseListParser;
     private ReviewListParser reviewListParser;
     private String clientVersion;
 
@@ -216,9 +217,9 @@ public Course call() throws Exception {
                     Course returnedFromServer = getCourseInfo(serverUrl);
 
                     try {
-                        URI skillifierUrl = getSkillifierUrl("/course/" + courseStub.getName());
-                        Course returnedFromSkillifier = getCourseInfo(skillifierUrl);
-                        returnedFromServer.getExercises().addAll(returnedFromSkillifier.getExercises());
+                        URI skillifierUrl = getSkillifierUrl("/course/" + courseStub.getName()+"/exercises");
+                        List <Exercise> returnedFromSkillifier = getExerciseList(skillifierUrl);
+                        returnedFromServer.getExercises().addAll(returnedFromSkillifier);
                     } catch (Exception e) {
                         LOG.log(Level.WARNING, "Downloading adaptive exercise info from skillifier failed.");
                     }
@@ -246,6 +247,12 @@ private Course getCourseInfo(URI uri) throws Exception {
         String jsonFromServer = downloadFromServer.call();
         return courseInfoParser.parseFromJson(jsonFromServer);
     }
+    
+    private List<Exercise> getExerciseList(URI uri) throws Exception {
+        final Callable<String> downloadFromServer = new HttpTasks().getForText(uri);
+        String jsonFromServer = downloadFromServer.call();
+        return exerciseListParser.parseFromJson(jsonFromServer);
+    }
 
     public Callable<Void> getUnlockingTask(final Course course) {
         final Map<String, String> params = Collections.emptyMap();
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/ExerciseListParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/ExerciseListParser.java
new file mode 100644
index 00000000..68ba68fa
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/ExerciseListParser.java
@@ -0,0 +1,42 @@
+package fi.helsinki.cs.tmc.core.communication.serialization;
+
+import fi.helsinki.cs.tmc.core.domain.Exercise;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+public class ExerciseListParser {
+
+    private static final Logger logger = LoggerFactory.getLogger(CourseListParser.class);
+
+    public List<Exercise> parseFromJson(String json) {
+        if (json == null) {
+            throw new NullPointerException("Json string is null");
+        }
+        if (json.trim().isEmpty()) {
+            throw new IllegalArgumentException("Empty input");
+        }
+        try {
+            Gson gson =
+                    new GsonBuilder()
+                            .registerTypeAdapter(Date.class, new CustomDateDeserializer())
+                            .create();
+
+            Exercise[] exercises = gson.fromJson(json, Exercise[].class);
+            List<Exercise> exerciseList = new ArrayList<>();
+            exerciseList.addAll(Arrays.asList(exercises));
+            return exerciseList;
+        } catch (RuntimeException ex) {
+            logger.warn("Failed to parse exercises info", ex);
+            throw new RuntimeException("Failed to parse adaptive exercise list: " + ex.getMessage(), ex);
+        }
+    }
+}

From 92542fe8876998181d655c82e1ae5e440a2be010 Mon Sep 17 00:00:00 2001
From: fogre <antti.kotiranta@helsinki.fi>
Date: Thu, 8 Jun 2017 15:13:19 +0300
Subject: [PATCH 100/113] added ExerciseListParserTest and corrected
 checkmystyle

---
 .../SubmitAdaptiveExerciseToSkillifier.java   |  2 -
 .../TmcServerCommunicationTaskFactory.java    | 19 ++--
 ...ubmitAdaptiveExerciseToSkillifierTest.java | 13 +--
 .../serialization/ExerciseListParserTest.java | 89 +++++++++++++++++++
 4 files changed, 106 insertions(+), 17 deletions(-)
 create mode 100644 src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/ExerciseListParserTest.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index 5e50fba4..3260b0be 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -1,7 +1,6 @@
 package fi.helsinki.cs.tmc.core.commands;
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
-import fi.helsinki.cs.tmc.core.communication.http.HttpTasks;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.domain.submission.AdaptiveSubmissionResult;
@@ -12,7 +11,6 @@
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 
-import org.apache.http.HttpRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index e60df6c9..ebf37f54 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -7,6 +7,7 @@
 import fi.helsinki.cs.tmc.core.communication.serialization.ByteArrayGsonSerializer;
 import fi.helsinki.cs.tmc.core.communication.serialization.CourseInfoParser;
 import fi.helsinki.cs.tmc.core.communication.serialization.CourseListParser;
+import fi.helsinki.cs.tmc.core.communication.serialization.ExerciseListParser;
 import fi.helsinki.cs.tmc.core.communication.serialization.ReviewListParser;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
@@ -29,7 +30,7 @@
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.google.gson.reflect.TypeToken;
-import fi.helsinki.cs.tmc.core.communication.serialization.ExerciseListParser;
+
 
 import org.apache.commons.io.IOUtils;
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
@@ -217,8 +218,8 @@ public Course call() throws Exception {
                     Course returnedFromServer = getCourseInfo(serverUrl);
 
                     try {
-                        URI skillifierUrl = getSkillifierUrl("/course/" + courseStub.getName()+"/exercises");
-                        List <Exercise> returnedFromSkillifier = getExerciseList(skillifierUrl);
+                        URI skillifierUrl = getSkillifierUrl("/course/" + courseStub.getName() + "/exercises");
+                        List<Exercise> returnedFromSkillifier = getExerciseList(skillifierUrl);
                         returnedFromServer.getExercises().addAll(returnedFromSkillifier);
                     } catch (Exception e) {
                         LOG.log(Level.WARNING, "Downloading adaptive exercise info from skillifier failed.");
@@ -235,6 +236,12 @@ public Course call() throws Exception {
             //TODO: Cancellable?
         });
     }
+    
+    private List<Exercise> getExerciseList(URI uri) throws Exception {
+        final Callable<String> downloadFromServer = new HttpTasks().getForText(uri);
+        String jsonFromServer = downloadFromServer.call();
+        return exerciseListParser.parseFromJson(jsonFromServer);
+    }
 
     private void addAdaptiveExercisesFromStub(Course returnedFromServer, Course courseStub) {
         Set<Exercise> set = new HashSet<>(returnedFromServer.getExercises());
@@ -247,12 +254,6 @@ private Course getCourseInfo(URI uri) throws Exception {
         String jsonFromServer = downloadFromServer.call();
         return courseInfoParser.parseFromJson(jsonFromServer);
     }
-    
-    private List<Exercise> getExerciseList(URI uri) throws Exception {
-        final Callable<String> downloadFromServer = new HttpTasks().getForText(uri);
-        String jsonFromServer = downloadFromServer.call();
-        return exerciseListParser.parseFromJson(jsonFromServer);
-    }
 
     public Callable<Void> getUnlockingTask(final Course course) {
         final Map<String, String> params = Collections.emptyMap();
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index 095ca197..ffbcbb73 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -109,13 +109,14 @@ public void testUnsuccessfulSubmit() throws Exception {
         verifyZeroInteractions(mockObserver);
         doReturn(new byte[0]).when(langs).compressProject(any(Path.class));
         when(factory.getSubmissionFetchTask(any(URI.class)))
-            .thenReturn(
-                new Callable<String>() {
-                    @Override
-                    public String call() throws Exception {
-                        return STUB_PROSESSING_ERRORED_RESPONSE;
+                .thenReturn(
+                    new Callable<String>() {
+                        @Override
+                        public String call() throws Exception {
+                            return STUB_PROSESSING_ERRORED_RESPONSE;
+                        }
                     }
-                });
+            );
 
         SubmissionResult result = command.call();
 
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/ExerciseListParserTest.java b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/ExerciseListParserTest.java
new file mode 100644
index 00000000..1226b49e
--- /dev/null
+++ b/src/test/java/fi/helsinki/cs/tmc/core/communication/http/serialization/ExerciseListParserTest.java
@@ -0,0 +1,89 @@
+package fi.helsinki.cs.tmc.core.communication.http.serialization;
+
+import static org.junit.Assert.assertEquals;
+
+import fi.helsinki.cs.tmc.core.communication.serialization.ExerciseListParser;
+import fi.helsinki.cs.tmc.core.domain.Exercise;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
+
+public class ExerciseListParserTest {
+    
+    private ExerciseListParser exerciseListParser;
+    private List<Exercise> exerciseList;
+    
+    @Before
+    public void setUp() {
+        this.exerciseListParser = new ExerciseListParser();
+        exerciseList = null;
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void jsonEmptyException() {
+        exerciseListParser.parseFromJson(null);
+    }
+    
+    @Test(expected = IllegalArgumentException.class)
+    public void jsonIllegalException() {
+        exerciseListParser.parseFromJson(" ");
+    }
+    
+    @Test
+    public void singleExcerciseIsParsedAndSetToList() {
+        String json = "[\n"
+                + "    {\n"
+                + "      \"id\": 1,\n"
+                + "      \"name\": \"Exercise name\",\n"
+                + "      \"disabled\": false,\n"
+                + "      \"available_points\": [\n"
+                + "        {\n"
+                + "          \"id\": 1,\n"
+                + "          \"exercise_id\": 1,\n"
+                + "          \"name\": \"Point name\",\n"
+                + "          \"require_review\": false\n"
+                + "        }\n"
+                + "      ]\n"
+                + "    }\n"
+                + "]";
+        exerciseList = exerciseListParser.parseFromJson(json);
+        assertEquals(1, exerciseList.size());
+    }
+    
+    @Test
+    public void setOfExcercisesIsParsedAndSetToList() {
+        String json = "[\n"
+                + "    {\n"
+                + "      \"id\": 1,\n"
+                + "      \"name\": \"Exercise name\",\n"
+                + "      \"disabled\": false,\n"
+                + "      \"available_points\": [\n"
+                + "        {\n"
+                + "          \"id\": 1,\n"
+                + "          \"exercise_id\": 1,\n"
+                + "          \"name\": \"Point name\",\n"
+                + "          \"require_review\": false\n"
+                + "        }\n"
+                + "      ]\n"
+                + "    },\n"
+                + "    {\n"
+                + "      \"id\": 2,\n"
+                + "      \"name\": \"Exercise name2\",\n"
+                + "      \"disabled\": false,\n"
+                + "      \"available_points\": [\n"
+                + "        {\n"
+                + "          \"id\": 2,\n"
+                + "          \"exercise_id\": 2,\n"
+                + "          \"name\": \"Point name\",\n"
+                + "          \"require_review\": false\n"
+                + "        }\n"
+                + "      ]\n"
+                + "    }\n"
+                + "]";
+        exerciseList = exerciseListParser.parseFromJson(json);
+        assertEquals(2, exerciseList.size());
+    }
+    
+}

From c3d155a6d593729d3ec5e74e0b1cd7ca551f5015 Mon Sep 17 00:00:00 2001
From: Henrik Nygren <nygrenh@gmail.com>
Date: Tue, 6 Jun 2017 14:41:06 +0300
Subject: [PATCH 101/113] Add OAuth when fetching submission statuses

---
 .../core/communication/TmcServerCommunicationTaskFactory.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index ebf37f54..710f691b 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -389,8 +389,8 @@ public SubmissionResponse(URI submissionUrl, URI pasteUrl) {
         }
     }
 
-    public Callable<String> getSubmissionFetchTask(URI submissionUrl) {
-        return new HttpTasks().getForText(submissionUrl);
+    public Callable<String> getSubmissionFetchTask(URI submissionUrl) throws NotLoggedInException {
+        return new HttpTasks().getForText(addApiCallQueryParameters(submissionUrl));
     }
 
     public Callable<List<Review>> getDownloadingReviewListTask(final Course course) {

From 1b10f1dc44d8447994910dc167d3bc2b436a8d49 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Fri, 9 Jun 2017 16:12:17 +0300
Subject: [PATCH 102/113] getting to work with new skillifier

---
 .../core/commands/DownloadAdaptiveExercise.java  | 13 ++-----------
 .../DownloadAdaptiveExerciseByTheme.java         | 16 +---------------
 .../SubmitAdaptiveExerciseToSkillifier.java      |  9 ++++-----
 .../TmcServerCommunicationTaskFactory.java       | 14 ++++++++++----
 .../serialization/AdaptiveExerciseParser.java    |  1 +
 .../serialization/ExerciseListParser.java        |  3 +++
 6 files changed, 21 insertions(+), 35 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 82f1a6fb..f86bb4b2 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -28,17 +28,8 @@ public DownloadAdaptiveExercise(ProgressObserver observer) {
     public Exercise call() throws Exception {
         logger.info("Checking adaptive exercises availability");
         Exercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
-        if (true) { //skillfier ei toimi
-            if (exercise == null) {
-                return null;
-            }
-            try {
-                exercise.setCourseName(TmcSettingsHolder.get().getCurrentCourse().get().getName());
-            } catch (Exception e) {
-                exercise.setCourseName("None");
-            }
-            exercise.setReturnable(true);
-            exercise.setAdaptive(true);
+        if (exercise == null) {
+            return null;
         }
         byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
         //checkInterrupt();
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
index 5fcb3d2e..09741389 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
@@ -28,21 +28,7 @@ public DownloadAdaptiveExerciseByTheme(ProgressObserver observer, Theme theme) {
     public Exercise call() throws Exception {
         logger.info("Checking adaptive exercises availability by theme");
         Exercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExercisyByTheme(theme).call();
-        /*
-        if (true) { //skillfier ei toimi
-            if (exercise == null) {
-                return null;
-            }
-            try {
-                exercise.setCourseName(TmcSettingsHolder.get().getCurrentCourse().get().getName());
-            } catch (Exception e) {
-                exercise.setCourseName("None");
-            }
-            exercise.setReturnable(true);
-            exercise.setAdaptive(true);
-        }
-        */
-        byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
+        byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingAdaptiveExerciseZipTask(exercise).call();
         //checkInterrupt();
         Progress progress = new Progress(3);
         extractProject(zipb, exercise, progress);
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index 3260b0be..664a7770 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -1,11 +1,12 @@
 package fi.helsinki.cs.tmc.core.commands;
 
+import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.domain.submission.AdaptiveSubmissionResult;
 import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
-import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
+import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.gson.Gson;
@@ -38,17 +39,15 @@ public SubmitAdaptiveExerciseToSkillifier(ProgressObserver observer, Exercise ex
 
 
     @Override
-    public SubmissionResult call() {
+    public SubmissionResult call() throws NotLoggedInException {
         logger.info("Submitting exercise {}", exercise.getName());
         informObserver(0, "Submitting exercise to server");
         URI submissionUrl = tmcServerCommunicationTaskFactory.getSkillifierUrl(
-                //"/exercises/" + exercise.getName() + "/submit");
-                "/Example/default/" + exercise.getName() +  "/submit/?username=" + TmcSettingsHolder.get().getToken().get());
+                "/submit?username=" + Oauth.getInstance().getToken());
         logger.info("submissionurl: {}", submissionUrl.toString());
         String networkResult = "";
         try {
             networkResult = tmcServerCommunicationTaskFactory.getSubmissionFetchTask(submissionUrl).call();
-            //String str = tmcServerCommunicationTaskFactory.getSubmissionFetchTask(tmcServerCommunicationTaskFactory.getSkillifierUrl(("/exercises/"+exercise.getName()+"/complete?username=asd).call()"))).call();
             
             logger.info("network result: {}", networkResult);
         } catch (Exception e) {
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 710f691b..e5352318 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -95,6 +95,7 @@ public TmcServerCommunicationTaskFactory(
         this.courseInfoParser = courseInfoParser;
         this.reviewListParser = reviewListParser;
         this.clientVersion = getClientVersion();
+        this.exerciseListParser = new ExerciseListParser();
     }
 
     private static String getClientVersion() {
@@ -182,7 +183,8 @@ public Callable<Exercise> getAdaptiveExercisyByTheme(final Theme theme)
                 public Exercise call() throws Exception {
                     try {
                         Callable<String> download = new HttpTasks()
-                                .getForText(getSkillifierUrl("theme/" + theme.getName() + "/next.json?username=" + oauth.getToken()));
+                                .getForText(getSkillifierUrl("exercise/"
+                                    + oauth.getToken() + "/" + theme.getName() + "/next.json"));
                         String json = download.call();
                         return adaptiveExerciseParser.parseFromJson(json);
                     } catch (Exception ex) {
@@ -218,14 +220,12 @@ public Course call() throws Exception {
                     Course returnedFromServer = getCourseInfo(serverUrl);
 
                     try {
-                        URI skillifierUrl = getSkillifierUrl("/course/" + courseStub.getName() + "/exercises");
+                        URI skillifierUrl = getSkillifierUrl("course/" + courseStub.getName() + "/exercises");
                         List<Exercise> returnedFromSkillifier = getExerciseList(skillifierUrl);
                         returnedFromServer.getExercises().addAll(returnedFromSkillifier);
                     } catch (Exception e) {
                         LOG.log(Level.WARNING, "Downloading adaptive exercise info from skillifier failed.");
                     }
-
-                    addAdaptiveExercisesFromStub(returnedFromServer, courseStub);
                     returnedFromServer.generateThemes();
                     return returnedFromServer;
                 } catch (FailedHttpResponseException ex) {
@@ -278,6 +278,12 @@ private URI getUnlockUrl(Course course) throws NotLoggedInException {
         return addApiCallQueryParameters(course.getUnlockUrl());
     }
 
+    public Callable<byte[]> getDownloadingAdaptiveExerciseZipTask(Exercise exercise) throws NotLoggedInException {
+        exercise.setZipUrl(URI.create(exercise.getZipUrl() + "?username=" + oauth.getToken()));
+        exercise.setDownloadUrl(exercise.getZipUrl());
+        return getDownloadingExerciseZipTask(exercise);
+    }
+
     public Callable<byte[]> getDownloadingExerciseZipTask(Exercise exercise) {
         URI zipUrl = exercise.getDownloadUrl();
         return new HttpTasks().getForBinary(zipUrl);
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
index e052849c..2fffa673 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/AdaptiveExerciseParser.java
@@ -28,6 +28,7 @@ public Exercise parseFromJson(String json) {
         try {
             Gson gson = new GsonBuilder().create();
             Exercise adaptive = gson.fromJson(json, Exercise.class);
+            adaptive.setAdaptive(true);
             if (adaptive.isAvailable()) {
                 String parsedUrl = adaptive.getZipUrl().toString();
                 adaptive.setZipUrl(URI.create("http://" + parsedUrl));
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/ExerciseListParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/ExerciseListParser.java
index 68ba68fa..ada00ad4 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/ExerciseListParser.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/ExerciseListParser.java
@@ -33,6 +33,9 @@ public List<Exercise> parseFromJson(String json) {
             Exercise[] exercises = gson.fromJson(json, Exercise[].class);
             List<Exercise> exerciseList = new ArrayList<>();
             exerciseList.addAll(Arrays.asList(exercises));
+            for (Exercise exercise : exerciseList) {
+                exercise.setAdaptive(true);
+            }
             return exerciseList;
         } catch (RuntimeException ex) {
             logger.warn("Failed to parse exercises info", ex);

From 06548d80461b709dd30fb5d5246ec0137057ed24 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio@helsinki.fi>
Date: Sun, 11 Jun 2017 12:46:47 +0300
Subject: [PATCH 103/113] test fix

---
 .../SubmitAdaptiveExerciseToSkillifier.java         | 13 +++++++++----
 .../SubmitAdaptiveExerciseToSkillifierTest.java     |  1 +
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index 664a7770..cd07b4fd 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -1,7 +1,7 @@
 package fi.helsinki.cs.tmc.core.commands;
 
-import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.domain.submission.AdaptiveSubmissionResult;
@@ -39,11 +39,16 @@ public SubmitAdaptiveExerciseToSkillifier(ProgressObserver observer, Exercise ex
 
 
     @Override
-    public SubmissionResult call() throws NotLoggedInException {
+    public SubmissionResult call() {
         logger.info("Submitting exercise {}", exercise.getName());
         informObserver(0, "Submitting exercise to server");
-        URI submissionUrl = tmcServerCommunicationTaskFactory.getSkillifierUrl(
-                "/submit?username=" + Oauth.getInstance().getToken());
+        URI submissionUrl = URI.create("");
+        try {
+            submissionUrl = tmcServerCommunicationTaskFactory.getSkillifierUrl(
+                    "/submit?username=" + Oauth.getInstance().getToken());
+        } catch (NotLoggedInException e) {
+            logger.warn("Not logged in", e);
+        }
         logger.info("submissionurl: {}", submissionUrl.toString());
         String networkResult = "";
         try {
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index ffbcbb73..054290cf 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -9,6 +9,7 @@
 import static org.mockito.Mockito.when;
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;

From 9c392a062f0a726ce5bace2420783549fa893601 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Mon, 12 Jun 2017 14:34:19 +0300
Subject: [PATCH 104/113] refactoring

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java |  6 ---
 .../commands/DownloadAdaptiveExercise.java    | 40 -------------------
 .../DownloadAdaptiveExerciseByTheme.java      | 22 ++++++++--
 .../TmcServerCommunicationTaskFactory.java    | 27 +------------
 .../DownloadAdaptiveExerciseTest.java         | 21 +++++-----
 5 files changed, 32 insertions(+), 84 deletions(-)
 delete mode 100644 src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 5326c76e..9079e646 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -1,7 +1,6 @@
 package fi.helsinki.cs.tmc.core;
 
 import fi.helsinki.cs.tmc.core.commands.AuthenticateUser;
-import fi.helsinki.cs.tmc.core.commands.DownloadAdaptiveExercise;
 import fi.helsinki.cs.tmc.core.commands.DownloadAdaptiveExerciseByTheme;
 import fi.helsinki.cs.tmc.core.commands.DownloadCompletedExercises;
 import fi.helsinki.cs.tmc.core.commands.DownloadModelSolution;
@@ -182,11 +181,6 @@ public Callable<Exercise> downloadModelSolution(ProgressObserver observer, Exerc
         logger.info("Creating new DownloadModelSolution command");
         return new ExceptionTrackingCallable<>(new DownloadModelSolution(observer, exercise));
     }
-    
-    public Callable<Exercise> downloadAdaptiveExercise(ProgressObserver observer) {
-        logger.info("Creating new DownloadAdaptiveExercise command");
-        return new ExceptionTrackingCallable<>(new DownloadAdaptiveExercise(observer));
-    }
 
     public Callable<Exercise> downloadAdaptiveExerciseByTheme(ProgressObserver observer, Theme theme) {
         logger.info("Creating new DownloadAdaptiveExerciseByTheme command");
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
deleted file mode 100644
index f86bb4b2..00000000
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package fi.helsinki.cs.tmc.core.commands;
-
-import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
-import fi.helsinki.cs.tmc.core.domain.Exercise;
-import fi.helsinki.cs.tmc.core.domain.Progress;
-import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
-import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
-
-import com.google.common.annotations.VisibleForTesting;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DownloadAdaptiveExercise extends ExerciseDownloadingCommand<Exercise> {
-
-    private static final Logger logger = LoggerFactory.getLogger(DownloadAdaptiveExercise.class);
-
-    public DownloadAdaptiveExercise(ProgressObserver observer) {
-        super(observer);
-    }
-
-    @VisibleForTesting
-    DownloadAdaptiveExercise(ProgressObserver observer, TmcServerCommunicationTaskFactory tmcServerCommunicationTaskFactory) {
-        super(observer, tmcServerCommunicationTaskFactory);
-    }
-
-    @Override
-    public Exercise call() throws Exception {
-        logger.info("Checking adaptive exercises availability");
-        Exercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExercise().call();
-        if (exercise == null) {
-            return null;
-        }
-        byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingExerciseZipTask(exercise).call();
-        //checkInterrupt();
-        Progress progress = new Progress(3);
-        extractProject(zipb, exercise, progress);
-        return exercise;
-    }
-}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
index 09741389..d2ecf974 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
@@ -1,10 +1,13 @@
 package fi.helsinki.cs.tmc.core.commands;
 
+import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.Progress;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.domain.Theme;
 
+import com.google.common.annotations.VisibleForTesting;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -15,7 +18,7 @@
  */
 public class DownloadAdaptiveExerciseByTheme extends ExerciseDownloadingCommand<Exercise> {
 
-    private static final Logger logger = LoggerFactory.getLogger(DownloadAdaptiveExercise.class);
+    private static final Logger logger = LoggerFactory.getLogger(DownloadAdaptiveExerciseByTheme.class);
 
     private Theme theme;
 
@@ -24,12 +27,25 @@ public DownloadAdaptiveExerciseByTheme(ProgressObserver observer, Theme theme) {
         this.theme = theme;
     }
 
+    @VisibleForTesting
+    DownloadAdaptiveExerciseByTheme(
+            ProgressObserver observer,
+            TmcServerCommunicationTaskFactory tmcServerCommunicationTaskFactory,
+            Theme theme) {
+        super(observer, tmcServerCommunicationTaskFactory);
+        this.theme = theme;
+    }
+
     @Override
     public Exercise call() throws Exception {
         logger.info("Checking adaptive exercises availability by theme");
-        Exercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExercisyByTheme(theme).call();
+        Callable<Exercise> test = tmcServerCommunicationTaskFactory.getAdaptiveExerciseByTheme(theme);
+        Exercise exercise = test.call();
+        if (exercise == null) {
+            return null;
+        }
         byte[] zipb = tmcServerCommunicationTaskFactory.getDownloadingAdaptiveExerciseZipTask(exercise).call();
-        //checkInterrupt();
+        checkInterrupt();
         Progress progress = new Progress(3);
         extractProject(zipb, exercise, progress);
         return exercise;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index e5352318..4d31f977 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -157,26 +157,7 @@ public URI getSkillifierUrl(String addition) {
         return URI.create("http://tmc-adapt.testmycode.io/");
     }
 
-    public Callable<Exercise> getAdaptiveExercise()
-        throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
-        return wrapWithNotLoggedInException(new Callable<Exercise>() {
-            @Override
-            public Exercise call() throws Exception {
-                try {
-                    Callable<String> download = new HttpTasks()
-                            //.getForText(getSkillifierUrl("Exercise/next.json"));
-                            .getForText(getSkillifierUrl("/Example/default/next.json?username=" + oauth.getToken()));
-                    String json = download.call();
-                    return adaptiveExerciseParser.parseFromJson(json);
-                } catch (Exception ex) {
-                    LOG.log(Level.WARNING, "Downloading and parsing adaptive exercise URL failed.");
-                    return null;
-                }
-            }
-        });
-    }
-
-    public Callable<Exercise> getAdaptiveExercisyByTheme(final Theme theme)
+    public Callable<Exercise> getAdaptiveExerciseByTheme(final Theme theme)
         throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
         return wrapWithNotLoggedInException(new Callable<Exercise>() {
                 @Override
@@ -243,12 +224,6 @@ private List<Exercise> getExerciseList(URI uri) throws Exception {
         return exerciseListParser.parseFromJson(jsonFromServer);
     }
 
-    private void addAdaptiveExercisesFromStub(Course returnedFromServer, Course courseStub) {
-        Set<Exercise> set = new HashSet<>(returnedFromServer.getExercises());
-        set.addAll(courseStub.getExercises());
-        returnedFromServer.setExercises(new ArrayList<Exercise>(set));
-    }
-
     private Course getCourseInfo(URI uri) throws Exception {
         final Callable<String> downloadFromServer = new HttpTasks().getForText(uri);
         String jsonFromServer = downloadFromServer.call();
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index 658b189d..78715a9a 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -16,6 +16,7 @@
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.domain.Theme;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
 import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
 import fi.helsinki.cs.tmc.core.utils.MockSettings;
@@ -23,8 +24,6 @@
 import fi.helsinki.cs.tmc.langs.util.TaskExecutor;
 import fi.helsinki.cs.tmc.langs.util.TaskExecutorImpl;
 
-import org.apache.commons.io.FileUtils;
-
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -36,7 +35,6 @@
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.concurrent.Callable;
 
 public class DownloadAdaptiveExerciseTest {
@@ -57,10 +55,13 @@ public class DownloadAdaptiveExerciseTest {
     Callable<Exercise> mockGetAdaptiveExercise;
     @Mock
     Oauth oauth;
+    @Mock
+    Theme mockTheme;
 
     private Command<Exercise> command;
     TaskExecutor langs;
     Path arithFuncsTempDir;
+    Theme theme;
 
     @Before
     public void setUp() throws IOException {
@@ -69,12 +70,13 @@ public void setUp() throws IOException {
         TmcSettingsHolder.set(settings);
         TmcLangsHolder.set(langs);
         arithFuncsTempDir = testFolder.getRoot().toPath().resolve("arith_funcs");
-        command = new DownloadAdaptiveExercise(mockObserver, factory);
+        command = new DownloadAdaptiveExerciseByTheme(mockObserver, factory, mockTheme);
 
         doCallRealMethod().when(langs).extractProject(any(Path.class), any(Path.class));
         mockExerciseOne.setName("ex1");
         mockExerciseOne.setCourseName("course1");
 
+
     }
 
     @Test
@@ -83,8 +85,8 @@ public void testDownloadAndExtractSuccess() throws Exception {
 
         Exercise exercise = command.call();
 
-        verify(factory).getAdaptiveExercise();
-        verify(factory).getDownloadingExerciseZipTask(mockExerciseOne);
+        verify(factory).getAdaptiveExerciseByTheme(mockTheme);
+        verify(factory).getDownloadingAdaptiveExerciseZipTask(mockExerciseOne);
 
         verifyNoMoreInteractions(factory);
 
@@ -98,7 +100,7 @@ public void testDownloadAndExtractFailure() throws Exception {
 
         Exercise exercise = command.call();
 
-        verify(factory).getAdaptiveExercise();
+        verify(factory).getAdaptiveExerciseByTheme(mockTheme);
 
         verifyNoMoreInteractions(factory);
 
@@ -107,14 +109,15 @@ public void testDownloadAndExtractFailure() throws Exception {
     private void setUpMocks() throws Exception {
         verifyZeroInteractions(langs);
 
-        when(factory.getAdaptiveExercise()).thenReturn(mockGetAdaptiveExercise);
+        when(mockTheme.getName()).thenReturn("testTheme");
+        when(factory.getAdaptiveExerciseByTheme(any(Theme.class))).thenReturn(mockGetAdaptiveExercise);
         when(mockGetAdaptiveExercise.call()).thenReturn(mockExerciseOne);
 
         when(mockExerciseOne.getExtractionTarget(any(Path.class))).thenReturn(arithFuncsTempDir);
         when(settings.getTmcProjectDirectory()).thenReturn(testFolder.getRoot().toPath());
         when(oauth.getToken()).thenReturn("testToken");
 
-        when(factory.getDownloadingExerciseZipTask(mockExerciseOne))
+        when(factory.getDownloadingAdaptiveExerciseZipTask(mockExerciseOne))
                 .thenReturn(
                         new Callable<byte[]>() {
                             @Override

From b6f4acb543b110a5e96d01e41a4be19bbb724572 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Mon, 12 Jun 2017 14:37:56 +0300
Subject: [PATCH 105/113] minor refactoring

---
 .../cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java | 3 +--
 .../cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java    | 4 ----
 2 files changed, 1 insertion(+), 6 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
index d2ecf974..757d06ce 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
@@ -39,8 +39,7 @@ public DownloadAdaptiveExerciseByTheme(ProgressObserver observer, Theme theme) {
     @Override
     public Exercise call() throws Exception {
         logger.info("Checking adaptive exercises availability by theme");
-        Callable<Exercise> test = tmcServerCommunicationTaskFactory.getAdaptiveExerciseByTheme(theme);
-        Exercise exercise = test.call();
+        Exercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExerciseByTheme(theme).call();
         if (exercise == null) {
             return null;
         }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index 78715a9a..3661fa0c 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -1,6 +1,5 @@
 package fi.helsinki.cs.tmc.core.commands;
 
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doCallRealMethod;
@@ -61,7 +60,6 @@ public class DownloadAdaptiveExerciseTest {
     private Command<Exercise> command;
     TaskExecutor langs;
     Path arithFuncsTempDir;
-    Theme theme;
 
     @Before
     public void setUp() throws IOException {
@@ -75,8 +73,6 @@ public void setUp() throws IOException {
         doCallRealMethod().when(langs).extractProject(any(Path.class), any(Path.class));
         mockExerciseOne.setName("ex1");
         mockExerciseOne.setCourseName("course1");
-
-
     }
 
     @Test

From a7fbb95f2e8f09a9b923ef91d5e4c812880a835f Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Wed, 14 Jun 2017 12:14:43 +0300
Subject: [PATCH 106/113] submit zip to skillifier

---
 .../commands/AbstractSubmissionCommand.java   | 61 +++++++++++++++---
 .../SubmitAdaptiveExerciseToSkillifier.java   | 63 +++++++++++++++++--
 .../TmcServerCommunicationTaskFactory.java    | 53 +++++++---------
 ...ubmitAdaptiveExerciseToSkillifierTest.java | 57 +++++++++++++----
 4 files changed, 177 insertions(+), 57 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/AbstractSubmissionCommand.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/AbstractSubmissionCommand.java
index 06173271..5b3d5538 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/AbstractSubmissionCommand.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/AbstractSubmissionCommand.java
@@ -37,8 +37,6 @@ abstract class AbstractSubmissionCommand<T> extends Command<T> {
     TmcServerCommunicationTaskFactory.SubmissionResponse submitToServer(
             Exercise exercise, Map<String, String> extraParams) throws TmcCoreException {
 
-        byte[] zippedProject;
-
         informObserver(0, "Zipping project");
 
         Path tmcRoot = TmcSettingsHolder.get().getTmcProjectDirectory();
@@ -47,13 +45,7 @@ TmcServerCommunicationTaskFactory.SubmissionResponse submitToServer(
         checkInterrupt();
         logger.info("Submitting project from path {}", projectPath);
 
-        try {
-            zippedProject = TmcLangsHolder.get().compressProject(projectPath);
-        } catch (IOException | NoLanguagePluginFoundException ex) {
-            informObserver(1, "Failed to compress project");
-            logger.warn("Failed to compress project", ex);
-            throw new TmcCoreException("Failed to compress project", ex);
-        }
+        byte[] zippedProject = compressProject(projectPath);
 
         extraParams.put("error_msg_locale", TmcSettingsHolder.get().getLocale().toString());
 
@@ -80,4 +72,55 @@ TmcServerCommunicationTaskFactory.SubmissionResponse submitToServer(
             throw new TmcCoreException("Failed to submit exercise", ex);
         }
     }
+
+    private byte[] compressProject(Path projectPath) throws TmcCoreException {
+        byte[] zippedProject;
+        try {
+            zippedProject = TmcLangsHolder.get().compressProject(projectPath);
+        } catch (IOException | NoLanguagePluginFoundException ex) {
+            informObserver(1, "Failed to compress project");
+            logger.warn("Failed to compress project", ex);
+            throw new TmcCoreException("Failed to compress project", ex);
+        }
+        return zippedProject;
+    }
+
+    TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
+            Exercise exercise, Map<String, String> extraParams) throws TmcCoreException {
+
+        informObserver(0, "Zipping project");
+
+        Path tmcRoot = TmcSettingsHolder.get().getTmcProjectDirectory();
+        Path projectPath = exercise.getExerciseDirectory(tmcRoot);
+
+        checkInterrupt();
+        logger.info("Submitting project to skillifier from path {}", projectPath);
+
+        byte[] zippedProject = compressProject(projectPath);
+
+        extraParams.put("error_msg_locale", TmcSettingsHolder.get().getLocale().toString());
+
+        checkInterrupt();
+        informObserver(0.5, "Submitting project to skillifier");
+        logger.info("Submitting project to skillifier");
+
+        try {
+            TmcServerCommunicationTaskFactory.SubmissionResponse response
+                    = tmcServerCommunicationTaskFactory
+                    .getSubmittingExerciseToSkillifierTask(exercise, zippedProject, extraParams)
+                    .call();
+
+            informObserver(1, "Submission to skillifier successfully completed");
+            logger.info("Submission to skillifier successfully completed");
+
+            return response;
+        } catch (Exception ex) {
+            if (ex instanceof NotLoggedInException) {
+                throw (NotLoggedInException)ex;
+            }
+            informObserver(1, "Failed to submit exercise to skillifier");
+            logger.warn("Failed to submit exercise to skillifier", ex);
+            throw new TmcCoreException("Failed to submit exercise to skillifier", ex);
+        }
+    }
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index cd07b4fd..3db8ba18 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -1,25 +1,28 @@
 package fi.helsinki.cs.tmc.core.commands;
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
-import fi.helsinki.cs.tmc.core.communication.oauth2.Oauth;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
 import fi.helsinki.cs.tmc.core.domain.submission.AdaptiveSubmissionResult;
 import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
-import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
+import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.net.URI;
+import java.util.HashMap;
+import java.util.concurrent.Callable;
 
 
 public class SubmitAdaptiveExerciseToSkillifier extends AbstractSubmissionCommand<SubmissionResult> {
     private static final Logger logger = LoggerFactory.getLogger(AbstractSubmissionCommand.class);
+    private static final int DEFAULT_POLL_INTERVAL = 1000 * 2;
 
     private Exercise exercise;
 
@@ -39,10 +42,54 @@ public SubmitAdaptiveExerciseToSkillifier(ProgressObserver observer, Exercise ex
 
 
     @Override
-    public SubmissionResult call() {
+    public SubmissionResult call() throws TmcCoreException {
         logger.info("Submitting exercise {}", exercise.getName());
         informObserver(0, "Submitting exercise to server");
-        URI submissionUrl = URI.create("");
+
+        //Submit zipped project to skillifier
+        TmcServerCommunicationTaskFactory.SubmissionResponse submissionResponse =
+                submitToSkillifier(exercise, new HashMap<String, String>());
+
+        //Wait for skillifier and sandbox to process the submission, fetch submission result after
+        while (true) {
+            checkInterrupt();
+            try {
+                Thread.sleep(DEFAULT_POLL_INTERVAL);
+            } catch (InterruptedException ex) {
+                logger.debug("Interrupted while sleeping", ex);
+            }
+            try {
+                logger.debug("Checking if skillifier is done processing submission");
+                Callable<String> submissionResultFetcher =
+                        tmcServerCommunicationTaskFactory.getSubmissionFetchTask(
+                            submissionResponse.submissionUrl);
+
+                String submissionStatus = submissionResultFetcher.call();
+                JsonElement submission = new JsonParser().parse(submissionStatus);
+                if (isProcessing(submission)) {
+                    logger.debug("Skillifier not done, sleeping for {}", DEFAULT_POLL_INTERVAL);
+                    informObserver(0.3, "Waiting for response from skillifier");
+                    // TODO: Replace with variable interval polling
+                    Thread.sleep(DEFAULT_POLL_INTERVAL);
+                } else {
+                    logger.debug("Skillifier done, parsing results");
+                    informObserver(0.6, "Reading submission result");
+
+                    Gson gson = new GsonBuilder().create();
+                    SubmissionResult result = gson.fromJson(submissionStatus, AdaptiveSubmissionResult.class).toSubmissionResult();
+
+                    logger.debug("Done parsing server response");
+                    informObserver(1, "Successfully read submission results");
+
+                    return result;
+                }
+            } catch (Exception ex) {
+                informObserver(1, "Error while waiting for response from server");
+                logger.warn("Error while updating submission status from server, continuing", ex);
+            }
+        }
+
+        /*
         try {
             submissionUrl = tmcServerCommunicationTaskFactory.getSkillifierUrl(
                     "/submit?username=" + Oauth.getInstance().getToken());
@@ -66,5 +113,11 @@ public SubmissionResult call() {
             logger.warn("submission result error: " + result.getError());
         }
         return result;
+    */
+    }
+
+
+    private boolean isProcessing(JsonElement submissionStatus) {
+        return submissionStatus.getAsJsonObject().get("status").getAsString().equals("processing");
     }
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 4d31f977..e75af92a 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -282,8 +282,7 @@ public Callable<SubmissionResponse> getSubmittingExerciseToSkillifierTask(
             public SubmissionResponse call() throws Exception {
                 String response;
                 try {
-                    URI submitUrl = URI.create("http://localhost:3200/submit");
-                    //final URI submitUrl = addApiCallQueryParameters(exercise.getReturnUrl());
+                    final URI submitUrl = getSkillifierUrl("/submit?usernsame=" + oauth.getToken());
                     final Callable<String> upload = new HttpTasks()
                             .uploadRawDataForTextDownload(submitUrl, params,
                                  byteToSend);
@@ -293,21 +292,7 @@ public SubmissionResponse call() throws Exception {
                 }
 
                 JsonObject respJson = new JsonParser().parse(response).getAsJsonObject();
-                if (respJson.get("error") != null) {
-                    throw new RuntimeException(
-                        "Server responded with error: " + respJson.get("error"));
-                } else if (respJson.get("submission_url") != null) {
-                    try {
-                        URI submissionUrl = new URI(respJson.get("submission_url").getAsString());
-                        URI pasteUrl = new URI(respJson.get("paste_url").getAsString());
-                        return new SubmissionResponse(submissionUrl, pasteUrl);
-                    } catch (Exception e) {
-                        throw new RuntimeException(
-                            "Server responded with malformed " + "submission url");
-                    }
-                } else {
-                    throw new RuntimeException("Server returned unknown response");
-                }
+                return getSubmissionResponse(respJson);
             }
 
             //TODO: Cancellable?
@@ -338,27 +323,31 @@ public SubmissionResponse call() throws Exception {
                 }
 
                 JsonObject respJson = new JsonParser().parse(response).getAsJsonObject();
-                if (respJson.get("error") != null) {
-                    throw new RuntimeException(
-                            "Server responded with error: " + respJson.get("error"));
-                } else if (respJson.get("submission_url") != null) {
-                    try {
-                        URI submissionUrl = new URI(respJson.get("submission_url").getAsString());
-                        URI pasteUrl = new URI(respJson.get("paste_url").getAsString());
-                        return new SubmissionResponse(submissionUrl, pasteUrl);
-                    } catch (Exception e) {
-                        throw new RuntimeException(
-                                "Server responded with malformed " + "submission url");
-                    }
-                } else {
-                    throw new RuntimeException("Server returned unknown response");
-                }
+                return getSubmissionResponse(respJson);
             }
 
             //TODO: Cancellable?
         });
     }
 
+    private SubmissionResponse getSubmissionResponse(JsonObject respJson) {
+        if (respJson.get("error") != null) {
+            throw new RuntimeException(
+                    "Server responded with error: " + respJson.get("error"));
+        } else if (respJson.get("submission_url") != null) {
+            try {
+                URI submissionUrl = new URI(respJson.get("submission_url").getAsString());
+                URI pasteUrl = new URI(respJson.get("paste_url").getAsString());
+                return new SubmissionResponse(submissionUrl, pasteUrl);
+            } catch (Exception e) {
+                throw new RuntimeException(
+                        "Server responded with malformed " + "submission url");
+            }
+        } else {
+            throw new RuntimeException("Server returned unknown response");
+        }
+    }
+
     public static class SubmissionResponse {
 
         public final URI submissionUrl;
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index 054290cf..8ea8c15b 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -35,6 +35,7 @@
 import java.net.URI;
 import java.nio.file.Path;
 import java.util.Locale;
+import java.util.Map;
 import java.util.concurrent.Callable;
 
 
@@ -58,8 +59,9 @@ public class SubmitAdaptiveExerciseToSkillifierTest {
     private static final TmcServerCommunicationTaskFactory.SubmissionResponse STUB_RESPONSE =
             new TmcServerCommunicationTaskFactory.SubmissionResponse(SUBMISSION_URI, PASTE_URI);
 
-    private static final String STUB_PROSESSING_ERRORED_RESPONSE = "{error: \"failed to submit the exercise\"}";
+    private static final String STUB_PROSESSING_ERRORED_RESPONSE = "{status : \"ERROR\", error: \"failed to submit the exercise\"}";
     private static final String STUB_PROSESSING_DONE_RESPONSE = "{status: \"OK\"}";
+    private static final String STUB_PROSESSING_RESPONSE = "{status: \"processing\"}";
 
     private Command<SubmissionResult> command;
     private Path arithFuncsTempDir;
@@ -74,7 +76,7 @@ public void setUp() {
         TmcLangsHolder.set(langs);
         TmcSettingsHolder.set(settings);
         Exercise ex = new Exercise("Osa02_01.WilliamLovelace", "Example");
-        command = new SubmitAdaptiveExerciseToSkillifier(mockObserver, ex, factory);
+        command = new SubmitAdaptiveExerciseToSkillifier(mockObserver, mockExercise, factory);
 
         arithFuncsTempDir = TestUtils.getProject(this.getClass(), "arith_funcs");
         when(mockExercise.getExerciseDirectory(any(Path.class))).thenReturn(arithFuncsTempDir);
@@ -90,14 +92,31 @@ public void testSuccessfulSubmit() throws Exception {
 
         verifyZeroInteractions(mockObserver);
         doReturn(new byte[0]).when(langs).compressProject(any(Path.class));
+        when(
+                factory.getSubmittingExerciseToSkillifierTask(
+                any(Exercise.class), any(byte[].class), any(Map.class)))
+                .thenReturn(
+                new Callable<TmcServerCommunicationTaskFactory.SubmissionResponse>() {
+                        @Override
+                        public TmcServerCommunicationTaskFactory.SubmissionResponse call() throws Exception {
+                            return STUB_RESPONSE;
+                        }
+                    });
         when(factory.getSubmissionFetchTask(any(URI.class)))
                 .thenReturn(
-                        new Callable<String>() {
-                            @Override
-                            public String call() throws Exception {
-                                return STUB_PROSESSING_DONE_RESPONSE;
-                            }
-                        });
+                new Callable<String>() {
+                        @Override
+                        public String call() throws Exception {
+                            return STUB_PROSESSING_RESPONSE;
+                        }
+                    })
+                .thenReturn(
+                new Callable<String>() {
+                        @Override
+                        public String call() throws Exception {
+                            return STUB_PROSESSING_DONE_RESPONSE;
+                        }
+                    });
 
         SubmissionResult result = command.call();
 
@@ -109,15 +128,31 @@ public void testUnsuccessfulSubmit() throws Exception {
 
         verifyZeroInteractions(mockObserver);
         doReturn(new byte[0]).when(langs).compressProject(any(Path.class));
+        when(
+                factory.getSubmittingExerciseToSkillifierTask(
+                any(Exercise.class), any(byte[].class), any(Map.class)))
+                .thenReturn(
+                new Callable<TmcServerCommunicationTaskFactory.SubmissionResponse>() {
+                        @Override
+                        public TmcServerCommunicationTaskFactory.SubmissionResponse call() throws Exception {
+                            return STUB_RESPONSE;
+                        }
+                    });
         when(factory.getSubmissionFetchTask(any(URI.class)))
                 .thenReturn(
-                    new Callable<String>() {
+                new Callable<String>() {
+                        @Override
+                        public String call() throws Exception {
+                            return STUB_PROSESSING_RESPONSE;
+                        }
+                    })
+                .thenReturn(
+                new Callable<String>() {
                         @Override
                         public String call() throws Exception {
                             return STUB_PROSESSING_ERRORED_RESPONSE;
                         }
-                    }
-            );
+                    });
 
         SubmissionResult result = command.call();
 

From b963eaacea74e61cabe817a523234f83cde48623 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Wed, 14 Jun 2017 12:35:38 +0300
Subject: [PATCH 107/113] url fixes, get adaptive exercise by theme and course

---
 .../java/fi/helsinki/cs/tmc/core/TmcCore.java  |  8 ++++----
 ...heme.java => DownloadAdaptiveExercise.java} | 18 ++++++++++--------
 .../SubmitAdaptiveExerciseToSkillifier.java    |  2 +-
 .../TmcServerCommunicationTaskFactory.java     |  6 +++---
 .../commands/DownloadAdaptiveExerciseTest.java |  8 ++++----
 5 files changed, 22 insertions(+), 20 deletions(-)
 rename src/main/java/fi/helsinki/cs/tmc/core/commands/{DownloadAdaptiveExerciseByTheme.java => DownloadAdaptiveExercise.java} (75%)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
index 9079e646..a328759e 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/TmcCore.java
@@ -1,7 +1,7 @@
 package fi.helsinki.cs.tmc.core;
 
 import fi.helsinki.cs.tmc.core.commands.AuthenticateUser;
-import fi.helsinki.cs.tmc.core.commands.DownloadAdaptiveExerciseByTheme;
+import fi.helsinki.cs.tmc.core.commands.DownloadAdaptiveExercise;
 import fi.helsinki.cs.tmc.core.commands.DownloadCompletedExercises;
 import fi.helsinki.cs.tmc.core.commands.DownloadModelSolution;
 import fi.helsinki.cs.tmc.core.commands.DownloadOrUpdateExercises;
@@ -182,9 +182,9 @@ public Callable<Exercise> downloadModelSolution(ProgressObserver observer, Exerc
         return new ExceptionTrackingCallable<>(new DownloadModelSolution(observer, exercise));
     }
 
-    public Callable<Exercise> downloadAdaptiveExerciseByTheme(ProgressObserver observer, Theme theme) {
-        logger.info("Creating new DownloadAdaptiveExerciseByTheme command");
-        return new ExceptionTrackingCallable<>(new DownloadAdaptiveExerciseByTheme(observer, theme));
+    public Callable<Exercise> downloadAdaptiveExercise(ProgressObserver observer, Theme theme, Course course) {
+        logger.info("Creating new DownloadAdaptiveExercise command");
+        return new ExceptionTrackingCallable<>(new DownloadAdaptiveExercise(observer, theme, course));
     }
     
     /**
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
similarity index 75%
rename from src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
rename to src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
index 757d06ce..7c21a03f 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseByTheme.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExercise.java
@@ -1,6 +1,7 @@
 package fi.helsinki.cs.tmc.core.commands;
 
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
+import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.Progress;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
@@ -11,35 +12,36 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.concurrent.Callable;
-
 /**
  * Created by markovai on 2.6.2017.
  */
-public class DownloadAdaptiveExerciseByTheme extends ExerciseDownloadingCommand<Exercise> {
+public class DownloadAdaptiveExercise extends ExerciseDownloadingCommand<Exercise> {
 
-    private static final Logger logger = LoggerFactory.getLogger(DownloadAdaptiveExerciseByTheme.class);
+    private static final Logger logger = LoggerFactory.getLogger(DownloadAdaptiveExercise.class);
 
     private Theme theme;
+    private Course course;
 
-    public DownloadAdaptiveExerciseByTheme(ProgressObserver observer, Theme theme) {
+    public DownloadAdaptiveExercise(ProgressObserver observer, Theme theme, Course course) {
         super(observer);
         this.theme = theme;
+        this.course = course;
     }
 
     @VisibleForTesting
-    DownloadAdaptiveExerciseByTheme(
+    DownloadAdaptiveExercise(
             ProgressObserver observer,
             TmcServerCommunicationTaskFactory tmcServerCommunicationTaskFactory,
-            Theme theme) {
+            Theme theme, Course course) {
         super(observer, tmcServerCommunicationTaskFactory);
         this.theme = theme;
+        this.course = course;
     }
 
     @Override
     public Exercise call() throws Exception {
         logger.info("Checking adaptive exercises availability by theme");
-        Exercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExerciseByTheme(theme).call();
+        Exercise exercise = tmcServerCommunicationTaskFactory.getAdaptiveExercise(theme, course).call();
         if (exercise == null) {
             return null;
         }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index 3db8ba18..1b37e93a 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -92,7 +92,7 @@ public SubmissionResult call() throws TmcCoreException {
         /*
         try {
             submissionUrl = tmcServerCommunicationTaskFactory.getSkillifierUrl(
-                    "/submit?username=" + Oauth.getInstance().getToken());
+                    "/submit?token=" + Oauth.getInstance().getToken());
         } catch (NotLoggedInException e) {
             logger.warn("Not logged in", e);
         }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index e75af92a..0e703cd9 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -157,7 +157,7 @@ public URI getSkillifierUrl(String addition) {
         return URI.create("http://tmc-adapt.testmycode.io/");
     }
 
-    public Callable<Exercise> getAdaptiveExerciseByTheme(final Theme theme)
+    public Callable<Exercise> getAdaptiveExercise(final Theme theme, final Course course)
         throws OAuthSystemException, OAuthProblemException, NotLoggedInException {
         return wrapWithNotLoggedInException(new Callable<Exercise>() {
                 @Override
@@ -165,7 +165,7 @@ public Exercise call() throws Exception {
                     try {
                         Callable<String> download = new HttpTasks()
                                 .getForText(getSkillifierUrl("exercise/"
-                                    + oauth.getToken() + "/" + theme.getName() + "/next.json"));
+                                    + course.getName() + "/" + theme.getName() + "/next.json?token" + oauth.getToken()));
                         String json = download.call();
                         return adaptiveExerciseParser.parseFromJson(json);
                     } catch (Exception ex) {
@@ -254,7 +254,7 @@ private URI getUnlockUrl(Course course) throws NotLoggedInException {
     }
 
     public Callable<byte[]> getDownloadingAdaptiveExerciseZipTask(Exercise exercise) throws NotLoggedInException {
-        exercise.setZipUrl(URI.create(exercise.getZipUrl() + "?username=" + oauth.getToken()));
+        exercise.setZipUrl(URI.create(exercise.getZipUrl() + "?token=" + oauth.getToken()));
         exercise.setDownloadUrl(exercise.getZipUrl());
         return getDownloadingExerciseZipTask(exercise);
     }
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
index 3661fa0c..8c10c753 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/DownloadAdaptiveExerciseTest.java
@@ -68,7 +68,7 @@ public void setUp() throws IOException {
         TmcSettingsHolder.set(settings);
         TmcLangsHolder.set(langs);
         arithFuncsTempDir = testFolder.getRoot().toPath().resolve("arith_funcs");
-        command = new DownloadAdaptiveExerciseByTheme(mockObserver, factory, mockTheme);
+        command = new DownloadAdaptiveExercise(mockObserver, factory, mockTheme, mockCourse);
 
         doCallRealMethod().when(langs).extractProject(any(Path.class), any(Path.class));
         mockExerciseOne.setName("ex1");
@@ -81,7 +81,7 @@ public void testDownloadAndExtractSuccess() throws Exception {
 
         Exercise exercise = command.call();
 
-        verify(factory).getAdaptiveExerciseByTheme(mockTheme);
+        verify(factory).getAdaptiveExercise(mockTheme, mockCourse);
         verify(factory).getDownloadingAdaptiveExerciseZipTask(mockExerciseOne);
 
         verifyNoMoreInteractions(factory);
@@ -96,7 +96,7 @@ public void testDownloadAndExtractFailure() throws Exception {
 
         Exercise exercise = command.call();
 
-        verify(factory).getAdaptiveExerciseByTheme(mockTheme);
+        verify(factory).getAdaptiveExercise(mockTheme, mockCourse);
 
         verifyNoMoreInteractions(factory);
 
@@ -106,7 +106,7 @@ private void setUpMocks() throws Exception {
         verifyZeroInteractions(langs);
 
         when(mockTheme.getName()).thenReturn("testTheme");
-        when(factory.getAdaptiveExerciseByTheme(any(Theme.class))).thenReturn(mockGetAdaptiveExercise);
+        when(factory.getAdaptiveExercise(any(Theme.class), any(Course.class))).thenReturn(mockGetAdaptiveExercise);
         when(mockGetAdaptiveExercise.call()).thenReturn(mockExerciseOne);
 
         when(mockExerciseOne.getExtractionTarget(any(Path.class))).thenReturn(arithFuncsTempDir);

From 8474c1bb0704a5054bdfb220957ba79f88398899 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Wed, 14 Jun 2017 14:33:06 +0300
Subject: [PATCH 108/113] url fix

---
 .../core/communication/TmcServerCommunicationTaskFactory.java  | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 0e703cd9..61d725df 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -164,8 +164,7 @@ public Callable<Exercise> getAdaptiveExercise(final Theme theme, final Course co
                 public Exercise call() throws Exception {
                     try {
                         Callable<String> download = new HttpTasks()
-                                .getForText(getSkillifierUrl("exercise/"
-                                    + course.getName() + "/" + theme.getName() + "/next.json?token" + oauth.getToken()));
+                                .getForText(getSkillifierUrl(course.getName() + "/" + theme.getName() + "/next.json?token" + oauth.getToken()));
                         String json = download.call();
                         return adaptiveExerciseParser.parseFromJson(json);
                     } catch (Exception ex) {

From 0610a8498b935c9790b43944fe156472d1e953cc Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Wed, 14 Jun 2017 14:40:07 +0300
Subject: [PATCH 109/113] url fix

---
 .../core/communication/TmcServerCommunicationTaskFactory.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 61d725df..0fc21a06 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -164,7 +164,7 @@ public Callable<Exercise> getAdaptiveExercise(final Theme theme, final Course co
                 public Exercise call() throws Exception {
                     try {
                         Callable<String> download = new HttpTasks()
-                                .getForText(getSkillifierUrl(course.getName() + "/" + theme.getName() + "/next.json?token" + oauth.getToken()));
+                                .getForText(getSkillifierUrl(course.getName() + "/" + theme.getName() + "/next.json?token=" + oauth.getToken()));
                         String json = download.call();
                         return adaptiveExerciseParser.parseFromJson(json);
                     } catch (Exception ex) {

From 2e6aae7b263c9da9378ca93eb6e8ae2df0dcf89e Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Thu, 15 Jun 2017 16:14:19 +0300
Subject: [PATCH 110/113] submit changed and tests

---
 .../commands/AbstractSubmissionCommand.java   | 18 ++++++++--
 .../SubmitAdaptiveExerciseToSkillifier.java   | 34 ++++--------------
 .../TmcServerCommunicationTaskFactory.java    | 22 +++++-------
 ...ubmitAdaptiveExerciseToSkillifierTest.java | 36 -------------------
 4 files changed, 29 insertions(+), 81 deletions(-)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/AbstractSubmissionCommand.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/AbstractSubmissionCommand.java
index 5b3d5538..e64090e0 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/AbstractSubmissionCommand.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/AbstractSubmissionCommand.java
@@ -3,6 +3,8 @@
 import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
+import fi.helsinki.cs.tmc.core.domain.submission.AdaptiveSubmissionResult;
+import fi.helsinki.cs.tmc.core.domain.submission.SubmissionResult;
 import fi.helsinki.cs.tmc.core.exceptions.NotLoggedInException;
 import fi.helsinki.cs.tmc.core.exceptions.TmcCoreException;
 import fi.helsinki.cs.tmc.core.holders.TmcLangsHolder;
@@ -10,6 +12,8 @@
 import fi.helsinki.cs.tmc.langs.domain.NoLanguagePluginFoundException;
 
 import com.google.common.annotations.VisibleForTesting;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -85,7 +89,7 @@ private byte[] compressProject(Path projectPath) throws TmcCoreException {
         return zippedProject;
     }
 
-    TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
+    SubmissionResult submitToSkillifier(
             Exercise exercise, Map<String, String> extraParams) throws TmcCoreException {
 
         informObserver(0, "Zipping project");
@@ -105,7 +109,7 @@ TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
         logger.info("Submitting project to skillifier");
 
         try {
-            TmcServerCommunicationTaskFactory.SubmissionResponse response
+            String resultJson
                     = tmcServerCommunicationTaskFactory
                     .getSubmittingExerciseToSkillifierTask(exercise, zippedProject, extraParams)
                     .call();
@@ -113,7 +117,15 @@ TmcServerCommunicationTaskFactory.SubmissionResponse submitToSkillifier(
             informObserver(1, "Submission to skillifier successfully completed");
             logger.info("Submission to skillifier successfully completed");
 
-            return response;
+            try {
+                Gson gson = new GsonBuilder().create();
+                SubmissionResult result = gson.fromJson(resultJson, AdaptiveSubmissionResult.class).toSubmissionResult();
+                return result;
+            } catch (Exception e) {
+                logger.warn("Failed to parse submission result from skillifier", e);
+            }
+            return null;
+
         } catch (Exception ex) {
             if (ex instanceof NotLoggedInException) {
                 throw (NotLoggedInException)ex;
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
index 1b37e93a..191616d9 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifier.java
@@ -47,10 +47,14 @@ public SubmissionResult call() throws TmcCoreException {
         informObserver(0, "Submitting exercise to server");
 
         //Submit zipped project to skillifier
-        TmcServerCommunicationTaskFactory.SubmissionResponse submissionResponse =
+        SubmissionResult submissionResult =
                 submitToSkillifier(exercise, new HashMap<String, String>());
+        
+        return submissionResult;
 
+        //TODO?
         //Wait for skillifier and sandbox to process the submission, fetch submission result after
+        /*
         while (true) {
             checkInterrupt();
             try {
@@ -69,7 +73,6 @@ public SubmissionResult call() throws TmcCoreException {
                 if (isProcessing(submission)) {
                     logger.debug("Skillifier not done, sleeping for {}", DEFAULT_POLL_INTERVAL);
                     informObserver(0.3, "Waiting for response from skillifier");
-                    // TODO: Replace with variable interval polling
                     Thread.sleep(DEFAULT_POLL_INTERVAL);
                 } else {
                     logger.debug("Skillifier done, parsing results");
@@ -88,32 +91,7 @@ public SubmissionResult call() throws TmcCoreException {
                 logger.warn("Error while updating submission status from server, continuing", ex);
             }
         }
-
-        /*
-        try {
-            submissionUrl = tmcServerCommunicationTaskFactory.getSkillifierUrl(
-                    "/submit?token=" + Oauth.getInstance().getToken());
-        } catch (NotLoggedInException e) {
-            logger.warn("Not logged in", e);
-        }
-        logger.info("submissionurl: {}", submissionUrl.toString());
-        String networkResult = "";
-        try {
-            networkResult = tmcServerCommunicationTaskFactory.getSubmissionFetchTask(submissionUrl).call();
-            
-            logger.info("network result: {}", networkResult);
-        } catch (Exception e) {
-            informObserver(1, "Error while waiting for response from server");
-            logger.warn("Error while updating adaptive submission status from server, continuing", e);
-        }
-
-        Gson gson = new GsonBuilder().create();
-        SubmissionResult result = gson.fromJson(networkResult, AdaptiveSubmissionResult.class).toSubmissionResult();
-        if (!"null".equals(result.getError())) {
-            logger.warn("submission result error: " + result.getError());
-        }
-        return result;
-    */
+        */
     }
 
 
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 0fc21a06..31b4ee97 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -31,7 +31,6 @@
 import com.google.gson.JsonParser;
 import com.google.gson.reflect.TypeToken;
 
-
 import org.apache.commons.io.IOUtils;
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
 import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
@@ -41,14 +40,11 @@
 import java.io.OutputStreamWriter;
 import java.net.URI;
 import java.nio.charset.Charset;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -152,9 +148,9 @@ private URI addApiCallQueryParameters(URI url) throws NotLoggedInException {
 
     public URI getSkillifierUrl(String addition) {
         if (!addition.isEmpty()) {
-            return URI.create("http://tmc-adapt.testmycode.io/" + addition);
+            return URI.create("http://localhost:3000/" + addition);
         }
-        return URI.create("http://tmc-adapt.testmycode.io/");
+        return URI.create("http://localhost:3000/");
     }
 
     public Callable<Exercise> getAdaptiveExercise(final Theme theme, final Course course)
@@ -200,7 +196,7 @@ public Course call() throws Exception {
                     Course returnedFromServer = getCourseInfo(serverUrl);
 
                     try {
-                        URI skillifierUrl = getSkillifierUrl("course/" + courseStub.getName() + "/exercises");
+                        URI skillifierUrl = getSkillifierUrl("courses/" + courseStub.getName() + "/uexercises?token=" + oauth.getToken());
                         List<Exercise> returnedFromSkillifier = getExerciseList(skillifierUrl);
                         returnedFromServer.getExercises().addAll(returnedFromSkillifier);
                     } catch (Exception e) {
@@ -268,7 +264,7 @@ public Callable<byte[]> getDownloadingExerciseSolutionZipTask(Exercise exercise)
         return new HttpTasks().getForBinary(zipUrl);
     }
 
-    public Callable<SubmissionResponse> getSubmittingExerciseToSkillifierTask(
+    public Callable<String> getSubmittingExerciseToSkillifierTask(
             final Exercise exercise, final byte[] byteToSend, Map<String, String> extraParams) {
 
         final Map<String, String> params = new LinkedHashMap<>();
@@ -276,12 +272,12 @@ public Callable<SubmissionResponse> getSubmittingExerciseToSkillifierTask(
         params.put("client_nanotime", "" + System.nanoTime());
         params.putAll(extraParams);
 
-        return wrapWithNotLoggedInException(new Callable<SubmissionResponse>() {
+        return wrapWithNotLoggedInException(new Callable<String>() {
             @Override
-            public SubmissionResponse call() throws Exception {
+            public String call() throws Exception {
                 String response;
                 try {
-                    final URI submitUrl = getSkillifierUrl("/submit?usernsame=" + oauth.getToken());
+                    final URI submitUrl = getSkillifierUrl("/submitZip?token=" + oauth.getToken());
                     final Callable<String> upload = new HttpTasks()
                             .uploadRawDataForTextDownload(submitUrl, params,
                                  byteToSend);
@@ -289,9 +285,7 @@ public SubmissionResponse call() throws Exception {
                 } catch (FailedHttpResponseException ex) {
                     return checkForObsoleteClient(ex);
                 }
-
-                JsonObject respJson = new JsonParser().parse(response).getAsJsonObject();
-                return getSubmissionResponse(respJson);
+                return response;
             }
 
             //TODO: Cancellable?
diff --git a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
index 8ea8c15b..7a72adb9 100644
--- a/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
+++ b/src/test/java/fi/helsinki/cs/tmc/core/commands/SubmitAdaptiveExerciseToSkillifierTest.java
@@ -54,14 +54,8 @@ public class SubmitAdaptiveExerciseToSkillifierTest {
     @Mock
     Exercise mockExercise;
 
-    private static final URI PASTE_URI = URI.create("http://example.com/paste");
-    private static final URI SUBMISSION_URI = URI.create("http://example.com/submission");
-    private static final TmcServerCommunicationTaskFactory.SubmissionResponse STUB_RESPONSE =
-            new TmcServerCommunicationTaskFactory.SubmissionResponse(SUBMISSION_URI, PASTE_URI);
-
     private static final String STUB_PROSESSING_ERRORED_RESPONSE = "{status : \"ERROR\", error: \"failed to submit the exercise\"}";
     private static final String STUB_PROSESSING_DONE_RESPONSE = "{status: \"OK\"}";
-    private static final String STUB_PROSESSING_RESPONSE = "{status: \"processing\"}";
 
     private Command<SubmissionResult> command;
     private Path arithFuncsTempDir;
@@ -96,21 +90,6 @@ public void testSuccessfulSubmit() throws Exception {
                 factory.getSubmittingExerciseToSkillifierTask(
                 any(Exercise.class), any(byte[].class), any(Map.class)))
                 .thenReturn(
-                new Callable<TmcServerCommunicationTaskFactory.SubmissionResponse>() {
-                        @Override
-                        public TmcServerCommunicationTaskFactory.SubmissionResponse call() throws Exception {
-                            return STUB_RESPONSE;
-                        }
-                    });
-        when(factory.getSubmissionFetchTask(any(URI.class)))
-                .thenReturn(
-                new Callable<String>() {
-                        @Override
-                        public String call() throws Exception {
-                            return STUB_PROSESSING_RESPONSE;
-                        }
-                    })
-                .thenReturn(
                 new Callable<String>() {
                         @Override
                         public String call() throws Exception {
@@ -132,21 +111,6 @@ public void testUnsuccessfulSubmit() throws Exception {
                 factory.getSubmittingExerciseToSkillifierTask(
                 any(Exercise.class), any(byte[].class), any(Map.class)))
                 .thenReturn(
-                new Callable<TmcServerCommunicationTaskFactory.SubmissionResponse>() {
-                        @Override
-                        public TmcServerCommunicationTaskFactory.SubmissionResponse call() throws Exception {
-                            return STUB_RESPONSE;
-                        }
-                    });
-        when(factory.getSubmissionFetchTask(any(URI.class)))
-                .thenReturn(
-                new Callable<String>() {
-                        @Override
-                        public String call() throws Exception {
-                            return STUB_PROSESSING_RESPONSE;
-                        }
-                    })
-                .thenReturn(
                 new Callable<String>() {
                         @Override
                         public String call() throws Exception {

From 18013c97ca79a654032a0ee341c40c6733ec2e8b Mon Sep 17 00:00:00 2001
From: Ville Tanttu <vilunen@gmail.com>
Date: Fri, 16 Jun 2017 10:29:38 +0300
Subject: [PATCH 111/113] Added Skill model

---
 .../TmcServerCommunicationTaskFactory.java    |  2 +-
 .../fi/helsinki/cs/tmc/core/domain/Skill.java | 41 +++++++++++++++++++
 .../fi/helsinki/cs/tmc/core/domain/Theme.java | 14 +++++--
 3 files changed, 52 insertions(+), 5 deletions(-)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/domain/Skill.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 31b4ee97..682cfce7 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -212,7 +212,7 @@ public Course call() throws Exception {
             //TODO: Cancellable?
         });
     }
-    
+
     private List<Exercise> getExerciseList(URI uri) throws Exception {
         final Callable<String> downloadFromServer = new HttpTasks().getForText(uri);
         String jsonFromServer = downloadFromServer.call();
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Skill.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Skill.java
new file mode 100644
index 00000000..6800e9c5
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Skill.java
@@ -0,0 +1,41 @@
+package fi.helsinki.cs.tmc.core.domain;
+
+import java.util.List;
+
+public class Skill {
+    private List<Exercise> exercises;
+    private Theme theme;
+    private String name;
+    private double percentage;
+    public double mastery;
+
+    public Skill(String name) {
+        this.name = name;
+        percentage = 0.0;
+        mastery = 90.0;
+    }
+
+    public void incrementPercentage(double amount) {
+        this.percentage += amount;
+    }
+
+    public void setTheme(Theme theme) {
+        this.theme = theme;
+    }
+
+    public void setExercises(List<Exercise> exercises) {
+        this.exercises = exercises;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Theme getTheme() {
+        return theme;
+    }
+
+    public double getPercentage() {
+        return percentage;
+    }
+}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
index e2476392..93dade94 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
@@ -3,23 +3,30 @@
 import java.util.ArrayList;
 import java.util.List;
 
-/**
- * Created by markovai on 29.5.2017.
- */
 public class Theme {
     private List<Exercise> exercises;
     private boolean unlocked = false;
     private String name;
+    private List<Skill> skills;
 
     public Theme(String name) {
         this.name = name;
         this.exercises = new ArrayList<>();
+        this.skills = new ArrayList<>();
     }
 
     public List<Exercise> getExercises() {
         return exercises;
     }
 
+    public List<Skill> getSkills() {
+        return skills;
+    }
+
+    public void setSkills(List<Skill> skills) {
+        this.skills = skills;
+    }
+
     public void setExercises(List<Exercise> exercises) {
         this.exercises = exercises;
     }
@@ -47,5 +54,4 @@ public boolean shouldContain(Exercise exercise) {
     public void addExercise(Exercise exercise) {
         exercises.add(exercise);
     }
-
 }

From 967d73cab89f0e45e315fd5ba54ac71234be5f90 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Fri, 16 Jun 2017 15:40:35 +0300
Subject: [PATCH 112/113] add skills information to course from skillifier

---
 .../TmcServerCommunicationTaskFactory.java    | 22 ++++++++--
 .../serialization/SkillListParser.java        | 41 +++++++++++++++++++
 .../helsinki/cs/tmc/core/domain/Course.java   | 21 ++++++++++
 .../fi/helsinki/cs/tmc/core/domain/Skill.java | 29 ++++++-------
 .../fi/helsinki/cs/tmc/core/domain/Theme.java |  7 +++-
 5 files changed, 101 insertions(+), 19 deletions(-)
 create mode 100644 src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/SkillListParser.java

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
index 682cfce7..c9658928 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/TmcServerCommunicationTaskFactory.java
@@ -9,12 +9,14 @@
 import fi.helsinki.cs.tmc.core.communication.serialization.CourseListParser;
 import fi.helsinki.cs.tmc.core.communication.serialization.ExerciseListParser;
 import fi.helsinki.cs.tmc.core.communication.serialization.ReviewListParser;
+import fi.helsinki.cs.tmc.core.communication.serialization.SkillListParser;
 import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
 import fi.helsinki.cs.tmc.core.domain.Course;
 import fi.helsinki.cs.tmc.core.domain.Exercise;
 import fi.helsinki.cs.tmc.core.domain.OauthCredentials;
 import fi.helsinki.cs.tmc.core.domain.Organization;
 import fi.helsinki.cs.tmc.core.domain.Review;
+import fi.helsinki.cs.tmc.core.domain.Skill;
 import fi.helsinki.cs.tmc.core.domain.Theme;
 import fi.helsinki.cs.tmc.core.domain.submission.FeedbackAnswer;
 import fi.helsinki.cs.tmc.core.exceptions.FailedHttpResponseException;
@@ -67,6 +69,7 @@ public class TmcServerCommunicationTaskFactory {
     private ExerciseListParser exerciseListParser;
     private ReviewListParser reviewListParser;
     private String clientVersion;
+    private SkillListParser skillListParser;
 
     public TmcServerCommunicationTaskFactory() {
         this(TmcSettingsHolder.get(), Oauth.getInstance());
@@ -92,6 +95,7 @@ public TmcServerCommunicationTaskFactory(
         this.reviewListParser = reviewListParser;
         this.clientVersion = getClientVersion();
         this.exerciseListParser = new ExerciseListParser();
+        this.skillListParser = new SkillListParser();
     }
 
     private static String getClientVersion() {
@@ -194,15 +198,19 @@ public Course call() throws Exception {
                 try {
                     URI serverUrl = addApiCallQueryParameters(courseStub.getDetailsUrl());
                     Course returnedFromServer = getCourseInfo(serverUrl);
-
+                    returnedFromServer.generateThemes();
                     try {
-                        URI skillifierUrl = getSkillifierUrl("courses/" + courseStub.getName() + "/uexercises?token=" + oauth.getToken());
-                        List<Exercise> returnedFromSkillifier = getExerciseList(skillifierUrl);
+                        URI skillifierExercisesUrl = getSkillifierUrl("courses/" + courseStub.getName() + "/uexercises?token=" + oauth.getToken());
+                        List<Exercise> returnedFromSkillifier = getExerciseList(skillifierExercisesUrl);
                         returnedFromServer.getExercises().addAll(returnedFromSkillifier);
+
+                        URI skillifierSkillsUrl = getSkillifierUrl("courses/" + courseStub.getName() + "/skills?token=" + oauth.getToken());
+                        List<Skill> skillsFromSkillifier = getSkillList(skillifierSkillsUrl);
+                        returnedFromServer.addSkillsToThemes(skillsFromSkillifier);
                     } catch (Exception e) {
                         LOG.log(Level.WARNING, "Downloading adaptive exercise info from skillifier failed.");
                     }
-                    returnedFromServer.generateThemes();
+
                     return returnedFromServer;
                 } catch (FailedHttpResponseException ex) {
                     return checkForObsoleteClient(ex);
@@ -213,6 +221,12 @@ public Course call() throws Exception {
         });
     }
 
+    private List<Skill> getSkillList(URI uri) throws Exception {
+        final Callable<String> downloadFromServer = new HttpTasks().getForText(uri);
+        String jsonFromServer = downloadFromServer.call();
+        return skillListParser.parseFromJson(jsonFromServer);
+    }
+
     private List<Exercise> getExerciseList(URI uri) throws Exception {
         final Callable<String> downloadFromServer = new HttpTasks().getForText(uri);
         String jsonFromServer = downloadFromServer.call();
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/SkillListParser.java b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/SkillListParser.java
new file mode 100644
index 00000000..94a365d4
--- /dev/null
+++ b/src/main/java/fi/helsinki/cs/tmc/core/communication/serialization/SkillListParser.java
@@ -0,0 +1,41 @@
+package fi.helsinki.cs.tmc.core.communication.serialization;
+
+import fi.helsinki.cs.tmc.core.domain.Skill;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Created by markovai on 16.6.2017.
+ */
+public class SkillListParser {
+    private static final Logger logger = LoggerFactory.getLogger(SkillListParser.class);
+
+    public List<Skill> parseFromJson(String json) {
+        if (json == null) {
+            throw new NullPointerException("Json string is null");
+        }
+        if (json.trim().isEmpty()) {
+            throw new IllegalArgumentException("Empty input");
+        }
+        try {
+            Gson gson =
+                    new GsonBuilder()
+                        .registerTypeAdapter(Date.class, new CustomDateDeserializer())
+                        .create();
+
+            Skill[] skills = gson.fromJson(json, Skill[].class);
+            return Arrays.asList(skills);
+        } catch (RuntimeException ex) {
+            logger.warn("Failed to parse themes info", ex);
+            throw new RuntimeException("Failed to parse adaptive theme list: " + ex.getMessage(), ex);
+        }
+    }
+}
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
index 206028bb..3b3a3c71 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
@@ -220,4 +220,25 @@ not use toString() to present Course objects
         */
         return name;
     }
+
+    public void setThemes(List<Theme> themes) {
+        this.themes = themes;
+    }
+
+    public void addSkillsToThemes(List<Skill> skillsFromSkillifier) {
+        for (Skill skill : skillsFromSkillifier) {
+            String themeName = skill.getThemeName();
+            Theme skillTheme = null;
+            for (Theme theme : themes) {
+                if (theme.getName().equals(themeName)) {
+                    skillTheme = theme;
+                    break;
+                }
+            }
+            if (skillTheme == null) {
+                themes.add(skillTheme = new Theme(themeName));
+            }
+            skillTheme.addSkill(skill);
+        }
+    }
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Skill.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Skill.java
index 6800e9c5..bcf43bae 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/Skill.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Skill.java
@@ -1,13 +1,14 @@
 package fi.helsinki.cs.tmc.core.domain;
 
+import java.io.Serializable;
 import java.util.List;
 
-public class Skill {
+public class Skill implements Serializable{
     private List<Exercise> exercises;
-    private Theme theme;
     private String name;
     private double percentage;
     public double mastery;
+    private String themeName;
 
     public Skill(String name) {
         this.name = name;
@@ -15,14 +16,6 @@ public Skill(String name) {
         mastery = 90.0;
     }
 
-    public void incrementPercentage(double amount) {
-        this.percentage += amount;
-    }
-
-    public void setTheme(Theme theme) {
-        this.theme = theme;
-    }
-
     public void setExercises(List<Exercise> exercises) {
         this.exercises = exercises;
     }
@@ -31,11 +24,19 @@ public String getName() {
         return name;
     }
 
-    public Theme getTheme() {
-        return theme;
-    }
-
     public double getPercentage() {
         return percentage;
     }
+
+    public String getThemeName() {
+        return themeName;
+    }
+
+    public boolean isMastered() {
+        return percentage >= mastery;
+    }
+
+    public void setThemeName(String themeName) {
+        this.themeName = themeName;
+    }
 }
diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
index 93dade94..83dbaaa4 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Theme.java
@@ -1,9 +1,10 @@
 package fi.helsinki.cs.tmc.core.domain;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
-public class Theme {
+public class Theme implements Serializable{
     private List<Exercise> exercises;
     private boolean unlocked = false;
     private String name;
@@ -54,4 +55,8 @@ public boolean shouldContain(Exercise exercise) {
     public void addExercise(Exercise exercise) {
         exercises.add(exercise);
     }
+
+    public void addSkill(Skill skill) {
+        skills.add(skill);
+    }
 }

From 4ddf01a8c8adf703550a369d53f05b38300c4d81 Mon Sep 17 00:00:00 2001
From: Mavai <marko.vainio14@gmail.com>
Date: Mon, 19 Jun 2017 10:38:52 +0300
Subject: [PATCH 113/113] get skills by theme

---
 src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java b/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
index 3b3a3c71..6ad58ae8 100644
--- a/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
+++ b/src/main/java/fi/helsinki/cs/tmc/core/domain/Course.java
@@ -75,6 +75,15 @@ public List<Theme> getThemes() {
         return themes;
     }
 
+    public List<Skill> getSkillsByTheme(String themeName) {
+        for (Theme theme : themes) {
+            if (theme.getName().equals(themeName)) {
+                return theme.getSkills();
+            }
+        }
+        return new ArrayList<>();
+    }
+
     /*
     public void setThemes(List<Theme> themes) {
         this.themes = themes;