Skip to content

Commit f0cc0a4

Browse files
authored
remove Classic support (#86)
* remove classic v1 tests * remove v1 parsing and throw a parse error if we have a v1 datafile
1 parent c1b088a commit f0cc0a4

16 files changed

+33
-2503
lines changed

core-api/src/main/java/com/optimizely/ab/Optimizely.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import com.optimizely.ab.annotations.VisibleForTesting;
2020
import com.optimizely.ab.bucketing.Bucketer;
2121
import com.optimizely.ab.bucketing.UserProfile;
22-
import com.optimizely.ab.internal.UserProfileUtils;
2322
import com.optimizely.ab.config.Attribute;
2423
import com.optimizely.ab.config.EventType;
2524
import com.optimizely.ab.config.Experiment;
@@ -36,29 +35,27 @@
3635
import com.optimizely.ab.event.LogEvent;
3736
import com.optimizely.ab.event.internal.BuildVersionInfo;
3837
import com.optimizely.ab.event.internal.EventBuilder;
39-
import com.optimizely.ab.event.internal.EventBuilderV1;
4038
import com.optimizely.ab.event.internal.EventBuilderV2;
4139
import com.optimizely.ab.event.internal.payload.Event.ClientEngine;
4240
import com.optimizely.ab.internal.EventTagUtils;
4341
import com.optimizely.ab.internal.ProjectValidationUtils;
4442
import com.optimizely.ab.internal.ReservedEventKey;
45-
import com.optimizely.ab.notification.NotificationListener;
43+
import com.optimizely.ab.internal.UserProfileUtils;
4644
import com.optimizely.ab.notification.NotificationBroadcaster;
47-
45+
import com.optimizely.ab.notification.NotificationListener;
4846
import org.slf4j.Logger;
4947
import org.slf4j.LoggerFactory;
5048

49+
import javax.annotation.CheckForNull;
50+
import javax.annotation.Nonnull;
51+
import javax.annotation.Nullable;
52+
import javax.annotation.concurrent.ThreadSafe;
5153
import java.util.ArrayList;
5254
import java.util.Collections;
5355
import java.util.HashMap;
5456
import java.util.List;
5557
import java.util.Map;
5658

57-
import javax.annotation.CheckForNull;
58-
import javax.annotation.Nonnull;
59-
import javax.annotation.Nullable;
60-
import javax.annotation.concurrent.ThreadSafe;
61-
6259
/**
6360
* Top-level container class for Optimizely functionality.
6461
* Thread-safe, so can be created as a singleton and safely passed around.
@@ -464,7 +461,14 @@ private static ProjectConfig getProjectConfig(String datafile) throws ConfigPars
464461
throw new ConfigParseException("Unable to parse empty datafile.");
465462
}
466463

467-
return DefaultConfigParser.getInstance().parseProjectConfig(datafile);
464+
ProjectConfig projectConfig = DefaultConfigParser.getInstance().parseProjectConfig(datafile);
465+
466+
if (projectConfig.getVersion().equals("1")) {
467+
throw new ConfigParseException("This version of the Java SDK does not support version 1 datafiles. " +
468+
"Please use a version 2 or 3 datafile with this SDK.");
469+
}
470+
471+
return projectConfig;
468472
}
469473

470474
@Nullable
@@ -733,11 +737,7 @@ public Optimizely build() throws ConfigParseException {
733737
}
734738

735739
if (eventBuilder == null) {
736-
if (projectConfig.getVersion().equals(ProjectConfig.Version.V1.toString())) {
737-
eventBuilder = new EventBuilderV1();
738-
} else {
739-
eventBuilder = new EventBuilderV2(clientEngine, clientVersion);
740-
}
740+
eventBuilder = new EventBuilderV2(clientEngine, clientVersion);
741741
}
742742

743743
if (errorHandler == null) {

core-api/src/main/java/com/optimizely/ab/config/parser/JsonSimpleConfigParser.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,36 +17,34 @@
1717
package com.optimizely.ab.config.parser;
1818

1919
import com.optimizely.ab.config.Attribute;
20-
import com.optimizely.ab.config.audience.AndCondition;
21-
import com.optimizely.ab.config.audience.Audience;
22-
import com.optimizely.ab.config.audience.Condition;
23-
import com.optimizely.ab.config.audience.NotCondition;
24-
import com.optimizely.ab.config.audience.OrCondition;
25-
import com.optimizely.ab.config.audience.UserAttribute;
2620
import com.optimizely.ab.config.EventType;
2721
import com.optimizely.ab.config.Experiment;
2822
import com.optimizely.ab.config.Experiment.ExperimentStatus;
2923
import com.optimizely.ab.config.Group;
3024
import com.optimizely.ab.config.LiveVariable;
31-
import com.optimizely.ab.config.LiveVariableUsageInstance;
3225
import com.optimizely.ab.config.LiveVariable.VariableStatus;
3326
import com.optimizely.ab.config.LiveVariable.VariableType;
27+
import com.optimizely.ab.config.LiveVariableUsageInstance;
3428
import com.optimizely.ab.config.ProjectConfig;
3529
import com.optimizely.ab.config.TrafficAllocation;
3630
import com.optimizely.ab.config.Variation;
37-
31+
import com.optimizely.ab.config.audience.AndCondition;
32+
import com.optimizely.ab.config.audience.Audience;
33+
import com.optimizely.ab.config.audience.Condition;
34+
import com.optimizely.ab.config.audience.NotCondition;
35+
import com.optimizely.ab.config.audience.OrCondition;
36+
import com.optimizely.ab.config.audience.UserAttribute;
3837
import org.json.simple.JSONArray;
3938
import org.json.simple.JSONObject;
4039
import org.json.simple.parser.JSONParser;
4140
import org.json.simple.parser.ParseException;
4241

42+
import javax.annotation.Nonnull;
4343
import java.util.ArrayList;
4444
import java.util.HashMap;
4545
import java.util.List;
4646
import java.util.Map;
4747

48-
import javax.annotation.Nonnull;
49-
5048
/**
5149
* {@code json-simple}-based config parser implementation.
5250
*/
@@ -67,7 +65,7 @@ public ProjectConfig parseProjectConfig(@Nonnull String json) throws ConfigParse
6765

6866
List<Attribute> attributes;
6967
if (version.equals(ProjectConfig.Version.V1.toString())) {
70-
attributes = parseAttributes((JSONArray)rootObject.get("dimensions"));
68+
throw new ConfigParseException("The Java SDK no longer supports datafile version 1. If you wish to use a Classic Custom Project, please use Java SDK version 1.6 or below.");
7169
} else {
7270
attributes = parseAttributes((JSONArray)rootObject.get("attributes"));
7371
}

core-api/src/main/java/com/optimizely/ab/config/parser/ProjectConfigGsonDeserializer.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,13 @@
2222
import com.google.gson.JsonObject;
2323
import com.google.gson.JsonParseException;
2424
import com.google.gson.reflect.TypeToken;
25-
2625
import com.optimizely.ab.config.Attribute;
27-
import com.optimizely.ab.config.audience.Audience;
2826
import com.optimizely.ab.config.EventType;
2927
import com.optimizely.ab.config.Experiment;
3028
import com.optimizely.ab.config.Group;
3129
import com.optimizely.ab.config.LiveVariable;
3230
import com.optimizely.ab.config.ProjectConfig;
31+
import com.optimizely.ab.config.audience.Audience;
3332

3433
import java.lang.reflect.Type;
3534
import java.util.List;
@@ -73,7 +72,7 @@ public ProjectConfig deserialize(JsonElement json, Type typeOfT, JsonDeserializa
7372
context.deserialize(jsonObject.get("audiences").getAsJsonArray(), audienceType);
7473

7574
boolean anonymizeIP = false;
76-
// live variables should be null if using V1
75+
// live variables should be null if using V2
7776
List<LiveVariable> liveVariables = null;
7877
if (version.equals(ProjectConfig.Version.V3.toString())) {
7978
Type liveVariablesType = new TypeToken<List<LiveVariable>>() {}.getType();

0 commit comments

Comments
 (0)