Skip to content

Exceptions #8

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 5 commits into
base: lang-tags
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/main/java/com/yetanalytics/xapi/model/Extensions.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,12 @@
import java.util.Map;
import java.util.Set;

import com.fasterxml.jackson.annotation.JsonValue;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.PathNotFoundException;
import com.yetanalytics.xapi.model.deserializers.ExtensionDeserializer;
import com.yetanalytics.xapi.model.serializers.ExtensionSerializer;
import com.yetanalytics.xapi.util.Mapper;

/**
Expand All @@ -22,7 +21,7 @@
* or through a JSONPath API.
*/
@JsonDeserialize(using = ExtensionDeserializer.class)
@JsonSerialize(using = ExtensionSerializer.class)
// @JsonSerialize(using = ExtensionSerializer.class)
public class Extensions {

private Map<URI, Object> extMap = new HashMap<>();
Expand Down Expand Up @@ -92,6 +91,7 @@ public Set<URI> getKeys() {
* Returns the full raw Extension Map as a HashMap&lt;URI, Object&gt;
* @return The raw Extensions Map
*/
@JsonValue
public Map<URI, Object> getMap() {
return extMap;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public static InteractionType getByDisplayName(String name) {
return t;
}
}
throw new IllegalArgumentException("Bad InteractionType Value");
throw new IllegalArgumentException("Invalid InteractionType value: " + name);
}

/**
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/com/yetanalytics/xapi/model/LangMap.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@
import java.util.Map;
import java.util.Set;

import com.fasterxml.jackson.annotation.JsonValue;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.yetanalytics.xapi.model.deserializers.LangMapDeserializer;
import com.yetanalytics.xapi.model.serializers.LangMapSerializer;

/**
* Java wrapper object for the
Expand All @@ -17,7 +16,7 @@
* the value is a String in the language specified by the tag.
*/
@JsonDeserialize(using = LangMapDeserializer.class)
@JsonSerialize(using = LangMapSerializer.class)
// @JsonSerialize(using = LangMapSerializer.class)
public class LangMap {

private HashMap<LangTag,String> languageHashMap = new HashMap<>();
Expand Down Expand Up @@ -68,6 +67,7 @@ public Set<LangTag> getLanguageCodes() {
* Retrieves the full Language Map in the form of a HashMap&lt;String, String&gt;
* @return The full Language Map
*/
@JsonValue
public Map<LangTag, String> getMap() {
return languageHashMap;
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/yetanalytics/xapi/model/ObjectType.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public static ObjectType getByDisplayName(String name) {
return t;
}
}
throw new IllegalArgumentException("Bad ObjectType Value");
throw new IllegalArgumentException("Invalid ObjectType value: " + name);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package com.yetanalytics.xapi.model.deserializers;

import com.fasterxml.jackson.databind.deser.std.StdDeserializer;

import com.yetanalytics.xapi.model.Group;
import java.io.IOException;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.yetanalytics.xapi.model.AbstractActor;
import com.yetanalytics.xapi.model.Agent;
import com.yetanalytics.xapi.model.Group;
import com.yetanalytics.xapi.model.ObjectType;
import com.yetanalytics.xapi.util.Mapper;

Expand All @@ -27,17 +27,15 @@ public AbstractActorDeserializer(final Class<?> vc) {
}

@Override
public AbstractActor deserialize(final JsonParser jp, final DeserializationContext context) {
try {
ObjectMapper mapper = Mapper.getMapper();
JsonNode node = mapper.readTree(jp);
String objType = node.has("objectType") ? node.get("objectType").asText() : null;
Class<? extends AbstractActor> instanceClass =
ObjectType.GROUP.matches(objType) ? Group.class : Agent.class;
return mapper.convertValue(node, instanceClass);
} catch (Exception e) {
e.printStackTrace();
return null;
}
public AbstractActor deserialize(final JsonParser jp, final DeserializationContext context) throws IOException {
ObjectMapper mapper = Mapper.getMapper();
JsonNode node = mapper.readTree(jp);
String objType = node.has("objectType")
? node.get("objectType").asText()
: null;
Class<? extends AbstractActor> instClass = ObjectType.GROUP.matches(objType)
? Group.class
: Agent.class;
return mapper.convertValue(node, instClass);
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package com.yetanalytics.xapi.model.deserializers;

import com.fasterxml.jackson.databind.deser.std.StdDeserializer;

import com.yetanalytics.xapi.model.Group;
import java.io.IOException;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.yetanalytics.xapi.model.AbstractObject;
import com.yetanalytics.xapi.model.Activity;
import com.yetanalytics.xapi.model.Agent;
import com.yetanalytics.xapi.model.Group;
import com.yetanalytics.xapi.model.ObjectType;
import com.yetanalytics.xapi.model.Statement;
import com.yetanalytics.xapi.model.StatementRef;
Expand All @@ -30,15 +30,17 @@ public AbstractObjectDeserializer(final Class<?> vc) {
}

private Class<? extends AbstractObject> getObjectType(JsonNode n) {
String objType = n.has("objectType") ? n.get("objectType").asText() : null;
String objType = n.has("objectType")
? n.get("objectType").asText()
: null;
boolean hasActor = n.has("actor");
boolean hasId = n.has("id");

if (ObjectType.GROUP.toString().equals(objType)){
if (ObjectType.GROUP.toString().equals(objType)) {
return Group.class;
} else if (ObjectType.STATEMENT_REF.matches(objType)) {
return StatementRef.class;
} else if (ObjectType.AGENT.matches(objType) || (objType == null && !hasId)){
} else if (ObjectType.AGENT.matches(objType) || (objType == null && !hasId)) {
return Agent.class;
} else if (ObjectType.SUB_STATEMENT.matches(objType)
|| (objType == null && hasActor)) {
Expand All @@ -49,13 +51,8 @@ private Class<? extends AbstractObject> getObjectType(JsonNode n) {
}

@Override
public AbstractObject deserialize(final JsonParser jp, final DeserializationContext context) {
try {
JsonNode node = jp.readValueAsTree();
return Mapper.getMapper().convertValue(node, getObjectType(node));
} catch (Exception e) {
e.printStackTrace();
return null;
}
public AbstractObject deserialize(final JsonParser jp, final DeserializationContext context) throws IOException {
JsonNode node = jp.readValueAsTree();
return Mapper.getMapper().convertValue(node, getObjectType(node));
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.yetanalytics.xapi.model.deserializers;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

Expand All @@ -26,23 +27,18 @@ public ContextActivityListDeserializer(final Class<?> vc) {
}

@Override
public List<Activity> deserialize(final JsonParser jp, final DeserializationContext context) {
try {
ObjectMapper mapper = Mapper.getMapper();
JsonNode node = mapper.readTree(jp);
//Sometimes a contextactivity list is actually a single entry, but
//should be converted to a list
if (node instanceof ArrayNode){
TypeReference<List<Activity>> typeRef = new TypeReference<List<Activity>>() {};
return mapper.convertValue(node, typeRef);
} else {
ArrayList<Activity> ctxActList = new ArrayList<Activity>();
ctxActList.add(mapper.convertValue(node, Activity.class));
return ctxActList;
}
} catch (Exception e) {
e.printStackTrace();
return null;
public List<Activity> deserialize(final JsonParser jp, final DeserializationContext context) throws IOException {
ObjectMapper mapper = Mapper.getMapper();
JsonNode node = mapper.readTree(jp);
// Sometimes a contextactivity list is actually a single entry, but
// should be converted to a list
if (node instanceof ArrayNode){
TypeReference<List<Activity>> typeRef = new TypeReference<List<Activity>>() {};
return mapper.convertValue(node, typeRef);
} else {
ArrayList<Activity> ctxActList = new ArrayList<>();
ctxActList.add(mapper.convertValue(node, Activity.class));
return ctxActList;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.yetanalytics.xapi.model.deserializers;

import java.io.IOException;
import java.net.URI;
import java.util.HashMap;

Expand All @@ -25,17 +26,11 @@ public ExtensionDeserializer(final Class<?> vc) {
}

@Override
public Extensions deserialize(final JsonParser jp, final DeserializationContext context) {
try {
TypeReference<HashMap<URI, Object>> typeRef
= new TypeReference<HashMap<URI,Object>>() {};

JsonNode node = Mapper.getMapper().readTree(jp);

return new Extensions(Mapper.getMapper().convertValue(node, typeRef));
} catch (Exception e) {
e.printStackTrace();
return null;
}
public Extensions deserialize(final JsonParser jp, final DeserializationContext context) throws IOException {
TypeReference<HashMap<URI, Object>> typeRef
= new TypeReference<HashMap<URI,Object>>() {};
JsonNode node = Mapper.getMapper().readTree(jp);
HashMap<URI, Object> m = Mapper.getMapper().convertValue(node, typeRef);
return new Extensions(m);
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.yetanalytics.xapi.model.deserializers;

import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import java.io.IOException;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.yetanalytics.xapi.model.InteractionType;
import com.yetanalytics.xapi.util.Mapper;

Expand All @@ -21,13 +23,9 @@ public InteractionTypeDeserializer(final Class<?> vc) {
}

@Override
public InteractionType deserialize(final JsonParser jp, final DeserializationContext context) {
try {
ObjectMapper mapper = Mapper.getMapper();
return InteractionType.getByDisplayName(mapper.readValue(jp, String.class));
} catch (Exception e) {
e.printStackTrace();
return null;
}
public InteractionType deserialize(final JsonParser jp, final DeserializationContext context) throws IOException {
ObjectMapper mapper = Mapper.getMapper();
String intType = mapper.readValue(jp, String.class);
return InteractionType.getByDisplayName(intType);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.yetanalytics.xapi.model.deserializers;

import java.io.IOException;
import java.util.HashMap;

import com.fasterxml.jackson.core.JsonParser;
Expand All @@ -25,16 +26,11 @@ public LangMapDeserializer(final Class<?> vc) {
}

@Override
public LangMap deserialize(final JsonParser jp, final DeserializationContext context) {
try {
ObjectMapper mapper = Mapper.getMapper();
TypeReference<HashMap<LangTag, String>> typeRef
= new TypeReference<HashMap<LangTag, String>>() {};

return new LangMap(mapper.readValue(jp, typeRef));
} catch (Exception e) {
e.printStackTrace();
return null;
}
public LangMap deserialize(final JsonParser jp, final DeserializationContext context) throws IOException {
ObjectMapper mapper = Mapper.getMapper();
TypeReference<HashMap<LangTag, String>> typeRef
= new TypeReference<HashMap<LangTag, String>>() {};
HashMap<LangTag, String> map = mapper.readValue(jp, typeRef);
return new LangMap(map);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.yetanalytics.xapi.model.deserializers;

import java.io.IOException;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.ObjectMapper;
Expand All @@ -23,17 +25,14 @@ public MimeTypeDeserializer(final Class<?> vc) {
}

@Override
public MimeType deserialize(final JsonParser jp, final DeserializationContext context) {
public MimeType deserialize(final JsonParser jp, final DeserializationContext context) throws IOException {
try {
ObjectMapper mapper = Mapper.getMapper();
return new MimeType(mapper.readValue(jp, String.class));
} catch (MimeTypeParseException e) {
// Need special case since MimeTypeParseException does not
// extend RuntimeException, so it angers the compiler.
throw new IllegalArgumentException(e);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.yetanalytics.xapi.model.deserializers;

import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import java.io.IOException;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.yetanalytics.xapi.model.ObjectType;
import com.yetanalytics.xapi.util.Mapper;

Expand All @@ -21,13 +23,9 @@ public ObjectTypeDeserializer(final Class<?> vc) {
}

@Override
public ObjectType deserialize(final JsonParser jp, final DeserializationContext context) {
try {
ObjectMapper mapper = Mapper.getMapper();
return ObjectType.getByDisplayName(mapper.readValue(jp, String.class));
} catch (Exception e) {
e.printStackTrace();
return null;
}
public ObjectType deserialize(final JsonParser jp, final DeserializationContext context) throws IOException {
ObjectMapper mapper = Mapper.getMapper();
String objType = mapper.readValue(jp, String.class);
return ObjectType.getByDisplayName(objType);
}
}
Loading
Loading