Skip to content

Enhance error handling of coordinate source with invalid column names  #670

Closed
@t-ober

Description

@t-ober

When we have a coordinate source with invalid column names we don't get a useful error message but a NullPointerException. We should be able to give more sensible feedback by first checking if these columns exist or throwing a more useful exception.

java.lang.NullPointerException: Cannot invoke "String.concat(String)" because the return value of "java.util.Map.get(Object)" is null
	at edu.ie3.datamodel.io.source.csv.CsvIdCoordinateSource.lambda$buildStreamWithFieldsToAttributesMap$2(CsvIdCoordinateSource.java:123)
	at edu.ie3.datamodel.utils.validation.ValidationUtils.lambda$distinctByKey$5(ValidationUtils.java:245)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
	at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1707)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:960)
	at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:934)
	at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327)
	at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:754)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
	at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:686)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:927)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at edu.ie3.datamodel.io.source.csv.CsvDataSource.distinctRowsWithLog(CsvDataSource.java:454)
	at edu.ie3.datamodel.io.source.csv.CsvIdCoordinateSource.buildStreamWithFieldsToAttributesMap(CsvIdCoordinateSource.java:124)
	at edu.ie3.datamodel.io.source.csv.CsvIdCoordinateSource.setupIdToCoordinateMap(CsvIdCoordinateSource.java:52)
	at edu.ie3.datamodel.io.source.csv.CsvIdCoordinateSource.<init>(CsvIdCoordinateSource.java:42)
	at edu.ie3.simona.service.weather.WeatherSource$.$anonfun$checkCoordinateSource$3(WeatherSource.scala:460)
	at edu.ie3.simona.service.weather.WeatherSourceWrapper$.apply(WeatherSourceWrapper.scala:321)
	at edu.ie3.simona.service.weather.WeatherSource$.$anonfun$checkConfig$6(WeatherSource.scala:390)
	at edu.ie3.simona.service.weather.WeatherSource$.apply(WeatherSource.scala:295)
	at edu.ie3.simona.service.weather.WeatherService.init(WeatherService.scala:136)
	at edu.ie3.simona.service.SimonaService$$anonfun$uninitialized$1.applyOrElse(SimonaService.scala:64)
	at akka.actor.Actor.aroundReceive(Actor.scala:537)
	at akka.actor.Actor.aroundReceive$(Actor.scala:535)
	at edu.ie3.simona.service.SimonaService.aroundReceive(SimonaService.scala:36)
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:579)
	at akka.actor.ActorCell.invoke(ActorCell.scala:547)
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:270)
	at akka.dispatch.Mailbox.run(Mailbox.scala:231)
	at akka.dispatch.Mailbox.exec(Mailbox.scala:243)

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions