Skip to content

Commit e933ddd

Browse files
committed
fix map handling of null geometries
1 parent a0e1f77 commit e933ddd

File tree

11 files changed

+34
-16
lines changed

11 files changed

+34
-16
lines changed

.project

+20
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,24 @@
2020
<nature>org.eclipse.m2e.core.maven2Nature</nature>
2121
<nature>org.eclipse.jdt.core.javanature</nature>
2222
</natures>
23+
<filteredResources>
24+
<filter>
25+
<id>1683120924267</id>
26+
<name></name>
27+
<type>10</type>
28+
<matcher>
29+
<id>org.eclipse.ui.ide.multiFilter</id>
30+
<arguments>1.0-name-matches-false-false-bin</arguments>
31+
</matcher>
32+
</filter>
33+
<filter>
34+
<id>1683120924280</id>
35+
<name></name>
36+
<type>10</type>
37+
<matcher>
38+
<id>org.eclipse.ui.ide.multiFilter</id>
39+
<arguments>1.0-name-matches-false-false-out</arguments>
40+
</matcher>
41+
</filter>
42+
</filteredResources>
2343
</projectDescription>

pom.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<modelVersion>4.0.0</modelVersion>
33
<groupId>fi.solita.utils</groupId>
44
<artifactId>api-utils</artifactId>
5-
<version>0.12.83</version>
5+
<version>0.12.84</version>
66
<build>
77
<resources>
88
<resource>
@@ -27,8 +27,8 @@
2727
<artifactId>maven-compiler-plugin</artifactId>
2828
<version>3.7.0</version>
2929
<configuration>
30-
<source>9</source>
31-
<target>9</target>
30+
<source>1.8</source>
31+
<target>1.8</target>
3232
<encoding>UTF-8</encoding>
3333
<optimize>true</optimize>
3434
<proc>none</proc>

src/main/java/fi/solita/utils/api/Includes.java

+2
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ public static final <T> Includes<T> resolveIncludes(ResolvableMemberProvider pro
146146
case JSON:
147147
case JSONL:
148148
case XML:
149+
case COUNT:
149150
ret = Includes.withNestedMembers(members, Includes.Include.All, builders);
150151
break;
151152
}
@@ -173,6 +174,7 @@ public static final <T> Includes<T> resolveIncludes(ResolvableMemberProvider pro
173174
case CSV:
174175
case XLSX:
175176
case XML:
177+
case COUNT:
176178
}
177179

178180
// Exclusions. Also excludes geometries if explicitly excluded.

src/main/java/fi/solita/utils/api/Transform.java

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import static fi.solita.utils.functional.Collections.newList;
55
import static fi.solita.utils.functional.Functional.filter;
66
import static fi.solita.utils.functional.Functional.flatten;
7-
import static fi.solita.utils.functional.Functional.head;
87
import static fi.solita.utils.functional.Predicates.equalTo;
98

109
import java.math.BigDecimal;

src/main/java/fi/solita/utils/api/format/HtmlConversionService.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ static String uriWithIncrementedStartIndex(HttpServletRequest request, boolean l
358358
int count = Integer.parseInt(cm.group(1));
359359

360360
String uri = RequestUtil.getApiVersionBasePath(request) + drop(1, RequestUtil.getAPIVersionRelativePathWithoutRevision(request)) + Option.of(request.getQueryString()).map(Transformers.prepend("?")).getOrElse("");
361-
StringBuilder sb = new StringBuilder();
361+
StringBuffer sb = new StringBuffer();
362362
Matcher m = START_INDEX.matcher(uri);
363363
if (m.find()) {
364364
m.appendReplacement(sb, "startIndex=" + (Integer.parseInt(m.group(1)) + count));

src/main/java/fi/solita/utils/api/format/JsonObjectMapper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import com.fasterxml.jackson.databind.JsonSerializer;
2020
import com.fasterxml.jackson.databind.MapperFeature;
2121
import com.fasterxml.jackson.databind.ObjectMapper;
22-
import com.fasterxml.jackson.databind.SerializationConfig;
2322
import com.fasterxml.jackson.databind.SerializerProvider;
2423
import com.fasterxml.jackson.databind.cfg.DeserializerFactoryConfig;
2524
import com.fasterxml.jackson.databind.cfg.SerializerFactoryConfig;
@@ -174,6 +173,7 @@ public JsonSerializer<Object> createSerializer(SerializerProvider prov, JavaType
174173

175174
private static final JsonSerializer<Object> stdStringKeySerializer = StdKeySerializers.getStdKeySerializer(null, String.class, false);
176175

176+
@SuppressWarnings("unchecked")
177177
@Override
178178
public JsonSerializer<Object> createKeySerializer(final SerializerProvider ctxt, JavaType type, final JsonSerializer<Object> defaultImpl) throws JsonMappingException {
179179
JsonSerializer<Object> serializer = super.createKeySerializer(ctxt, type, defaultImpl);

src/main/java/fi/solita/utils/api/format/XmlConversionService.java

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import static fi.solita.utils.functional.Collections.newMutableMap;
66
import static fi.solita.utils.functional.Functional.concat;
77
import static fi.solita.utils.functional.Functional.flatMap;
8-
import static fi.solita.utils.functional.FunctionalA.concat;
98

109
import java.util.Map;
1110

src/main/java/fi/solita/utils/api/request/SupportServiceBase.java

-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import org.joda.time.LocalDate;
2121
import org.joda.time.Period;
2222

23-
import fi.solita.utils.api.NotFoundException;
2423
import fi.solita.utils.api.base.http.HttpSerializers.InvalidValueException;
2524
import fi.solita.utils.api.format.SerializationFormat;
2625
import fi.solita.utils.api.util.RequestUtil;

src/main/java/fi/solita/utils/api/resolving/GeojsonResolver.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package fi.solita.utils.api.resolving;
22

3-
import static fi.solita.utils.functional.Collections.emptyList;
43
import static fi.solita.utils.functional.Collections.newList;
5-
import static fi.solita.utils.functional.Functional.concat;
4+
import static fi.solita.utils.functional.Collections.newMutableList;
65
import static fi.solita.utils.functional.Functional.filter;
76
import static fi.solita.utils.functional.Functional.flatMap;
87

98
import java.util.Collection;
9+
import java.util.List;
1010

1111
import fi.solita.utils.api.Includes;
1212
import fi.solita.utils.api.format.geojson.FeatureObject;
@@ -19,15 +19,15 @@ public abstract class GeojsonResolver {
1919

2020
@SuppressWarnings("unchecked")
2121
public <DTO> Collection<FeatureObject> getResolvedFeatures(Iterable<DTO> d, Includes<DTO> includes) {
22-
Iterable<FeatureObject> ret = emptyList();
22+
List<FeatureObject> ret = newMutableList();
2323
for (final MetaNamedMember<DTO,Object> member: (Iterable<MetaNamedMember<DTO,Object>>)(Object)filter(ResolvableMemberProvider_.isResolvableMember, includes)) {
2424
for (DTO t: d) {
25-
ret = concat(ret, flatMap(new Apply<Object, Collection<FeatureObject>>() {
25+
ret.addAll(newList(flatMap(new Apply<Object, Collection<FeatureObject>>() {
2626
@Override
2727
public Collection<FeatureObject> apply(Object resolvable) {
2828
return getFeaturesForResolvable(member, resolvable);
2929
}
30-
}, ResolvableMemberProvider.unwrapResolvable(((ResolvableMember<DTO>)member).original, t)));
30+
}, ResolvableMemberProvider.unwrapResolvable(((ResolvableMember<DTO>)member).original, t))));
3131
}
3232
}
3333
return newList(ret);

src/main/java/fi/solita/utils/api/util/MemberUtil.java

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import static fi.solita.utils.functional.Functional.sort;
88
import static fi.solita.utils.functional.Option.None;
99
import static fi.solita.utils.functional.Option.Some;
10-
import static fi.solita.utils.functional.Predicates.equalTo;
1110

1211
import java.lang.reflect.AccessibleObject;
1312
import java.lang.reflect.Field;

src/main/resources/r/js/olstuff.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -370,9 +370,9 @@ var olstuff = function(constants, util) {
370370

371371
// openlayers throws error if coordinates == null
372372
if (response.type == 'FeatureCollection') {
373-
response.features.filter(f => f.geometry.coordinates == null).forEach((f => f.geometry.coordinates = []));
373+
response.features.filter(f => f.geometry && f.geometry.coordinates == null).forEach((f => f.geometry.coordinates = []));
374374
} else if (response.type == 'Feature') {
375-
if (response.geometry.coordinates == null) {
375+
if (response.geometry && response.geometry.coordinates == null) {
376376
response.geometry.coordinates = [];
377377
}
378378
}

0 commit comments

Comments
 (0)