This is an automated email from the ASF dual-hosted git repository.

bchapuis pushed a commit to branch instanceof
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git

commit c7464ad8ae1d947480622258741052d46c4bfa24
Author: Bertil Chapuis <[email protected]>
AuthorDate: Tue Nov 22 01:03:53 2022 +0100

    Replace visitor pattern by instanceof and sealed classes
---
 .../apache/baremaps/database/ImportService.java    |  2 +
 .../baremaps/database/SaveChangeConsumer.java      | 58 +++++++---------------
 .../openstreetmap/function/BlockConsumer.java      | 10 ++--
 .../openstreetmap/function/BlockFunction.java      | 10 ++--
 .../openstreetmap/function/EntityConsumer.java     | 16 ++++--
 .../openstreetmap/function/EntityFunction.java     | 16 ++++--
 .../apache/baremaps/openstreetmap/model/Block.java | 26 ++--------
 .../apache/baremaps/openstreetmap/model/Bound.java | 16 +-----
 .../baremaps/openstreetmap/model/DataBlock.java    | 15 +-----
 .../baremaps/openstreetmap/model/Element.java      |  5 +-
 .../baremaps/openstreetmap/model/Entity.java       | 13 ++---
 .../baremaps/openstreetmap/model/Header.java       | 14 +-----
 .../baremaps/openstreetmap/model/HeaderBlock.java  | 16 +-----
 .../apache/baremaps/openstreetmap/model/Node.java  | 14 ------
 .../baremaps/openstreetmap/model/Relation.java     | 14 ------
 .../apache/baremaps/openstreetmap/model/Way.java   | 14 ------
 .../openstreetmap/pbf/PbfEntityReader.java         | 15 +++++-
 17 files changed, 90 insertions(+), 184 deletions(-)

diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/database/ImportService.java 
b/baremaps-core/src/main/java/org/apache/baremaps/database/ImportService.java
index c4bb15ac..1710f8d1 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/database/ImportService.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/database/ImportService.java
@@ -27,6 +27,7 @@ import 
org.apache.baremaps.database.repository.HeaderRepository;
 import org.apache.baremaps.database.repository.Repository;
 import org.apache.baremaps.openstreetmap.function.BlockEntityConsumer;
 import org.apache.baremaps.openstreetmap.function.CreateGeometryConsumer;
+import org.apache.baremaps.openstreetmap.function.EntityConsumer;
 import org.apache.baremaps.openstreetmap.function.ReprojectEntityConsumer;
 import org.apache.baremaps.openstreetmap.model.Block;
 import org.apache.baremaps.openstreetmap.model.Entity;
@@ -77,4 +78,5 @@ public class ImportService implements Callable<Void> {
     }
     return null;
   }
+
 }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/database/SaveChangeConsumer.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/database/SaveChangeConsumer.java
index b2160266..d8146b58 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/database/SaveChangeConsumer.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/database/SaveChangeConsumer.java
@@ -16,7 +16,6 @@ package org.apache.baremaps.database;
 
 import org.apache.baremaps.database.repository.Repository;
 import org.apache.baremaps.openstreetmap.function.ChangeConsumer;
-import org.apache.baremaps.openstreetmap.function.EntityConsumerAdapter;
 import org.apache.baremaps.openstreetmap.model.Change;
 import org.apache.baremaps.openstreetmap.model.Entity;
 import org.apache.baremaps.openstreetmap.model.Node;
@@ -48,46 +47,27 @@ public class SaveChangeConsumer implements ChangeConsumer {
   @Override
   public void match(Change change) throws Exception {
     for (Entity entity : change.getEntities()) {
-      entity.visit(new EntityConsumerAdapter() {
-        @Override
-        public void match(Node node) throws Exception {
-          switch (change.getType()) {
-            case CREATE:
-            case MODIFY:
-              nodeRepository.put(node);
-              break;
-            case DELETE:
-              nodeRepository.delete(node.getId());
-              break;
+      switch (change.getType()) {
+        case CREATE:
+        case MODIFY:
+          if (entity instanceof Node node) {
+            nodeRepository.put(node);
+          } else if (entity instanceof Way way) {
+            wayRepository.put(way);
+          } else if (entity instanceof Relation relation) {
+            relationRepository.put(relation);
           }
-        }
-
-        @Override
-        public void match(Way way) throws Exception {
-          switch (change.getType()) {
-            case CREATE:
-            case MODIFY:
-              wayRepository.put(way);
-              break;
-            case DELETE:
-              wayRepository.delete(way.getId());
-              break;
-          }
-        }
-
-        @Override
-        public void match(Relation relation) throws Exception {
-          switch (change.getType()) {
-            case CREATE:
-            case MODIFY:
-              relationRepository.put(relation);
-              break;
-            case DELETE:
-              relationRepository.delete(relation.getId());
-              break;
+          break;
+        case DELETE:
+          if (entity instanceof Node node) {
+            nodeRepository.delete(node.getId());
+          } else if (entity instanceof Way way) {
+            wayRepository.delete(way.getId());
+          } else if (entity instanceof Relation relation) {
+            relationRepository.delete(relation.getId());
           }
-        }
-      });
+          break;
+      }
     }
   }
 }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/BlockConsumer.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/BlockConsumer.java
index cd320d89..70b6a8cd 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/BlockConsumer.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/BlockConsumer.java
@@ -27,9 +27,13 @@ public interface BlockConsumer extends Consumer<Block> {
   @Override
   default void accept(Block block) {
     try {
-      block.visit(this);
-    } catch (StreamException e) {
-      throw e;
+      if (block instanceof HeaderBlock headerBlock) {
+        match(headerBlock);
+      } else if (block instanceof DataBlock dataBlock) {
+        match(dataBlock);
+      } else {
+        throw new StreamException("Unknown block type.");
+      }
     } catch (Exception e) {
       throw new StreamException(e);
     }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/BlockFunction.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/BlockFunction.java
index 8c5bc871..17303b4c 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/BlockFunction.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/BlockFunction.java
@@ -31,9 +31,13 @@ public interface BlockFunction<T> extends Function<Block, T> 
{
   @Override
   default T apply(Block block) {
     try {
-      return block.visit(this);
-    } catch (StreamException e) {
-      throw e;
+      if (block instanceof HeaderBlock headerBlock) {
+        return match(headerBlock);
+      } else if (block instanceof DataBlock dataBlock) {
+        return match(dataBlock);
+      } else {
+        throw new StreamException("Unknown block type.");
+      }
     } catch (Exception e) {
       throw new StreamException(e);
     }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/EntityConsumer.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/EntityConsumer.java
index 7890ada8..1ba0eb3d 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/EntityConsumer.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/EntityConsumer.java
@@ -30,9 +30,19 @@ public interface EntityConsumer extends Consumer<Entity> {
   @Override
   default void accept(Entity entity) {
     try {
-      entity.visit(this);
-    } catch (StreamException e) {
-      throw e;
+      if (entity instanceof Node node) {
+        match(node);
+      } else if (entity instanceof Way way) {
+        match(way);
+      } else if (entity instanceof Relation relation) {
+        match(relation);
+      } else if (entity instanceof Header header) {
+        match(header);
+      } else if (entity instanceof Bound bound) {
+        match(bound);
+      } else {
+        throw new StreamException("Unknown entity type.");
+      }
     } catch (Exception e) {
       throw new StreamException(e);
     }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/EntityFunction.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/EntityFunction.java
index 6861418c..a2ec7913 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/EntityFunction.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/EntityFunction.java
@@ -34,9 +34,19 @@ public interface EntityFunction<T> extends Function<Entity, 
T> {
   @Override
   default T apply(Entity entity) {
     try {
-      return entity.visit(this);
-    } catch (StreamException e) {
-      throw e;
+      if (entity instanceof Node node) {
+        return match(node);
+      } else if (entity instanceof Way way) {
+        return match(way);
+      } else if (entity instanceof Relation relation) {
+        return match(relation);
+      } else if (entity instanceof Header header) {
+        return match(header);
+      } else if (entity instanceof Bound bound) {
+        return match(bound);
+      } else {
+        throw new StreamException("Unknown entity type.");
+      }
     } catch (Exception e) {
       throw new StreamException(e);
     }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Block.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Block.java
index 47e10bb7..5a3d6cf6 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Block.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Block.java
@@ -13,12 +13,11 @@
 package org.apache.baremaps.openstreetmap.model;
 
 
-
-import org.apache.baremaps.openstreetmap.function.BlockConsumer;
-import org.apache.baremaps.openstreetmap.function.BlockFunction;
-
 /** Represents a block of data in an OpenStreetMap dataset. */
-public abstract class Block {
+public abstract sealed
+class Block
+permits HeaderBlock, DataBlock
+{
 
   private final Blob blob;
 
@@ -40,21 +39,4 @@ public abstract class Block {
     return blob;
   }
 
-  /**
-   * Accepts the specified block consumer.
-   *
-   * @param consumer the consumer
-   * @throws Exception
-   */
-  public abstract void visit(BlockConsumer consumer) throws Exception;
-
-  /**
-   * Applies the specified block function.
-   *
-   * @param function the function
-   * @param <T> the return type of the function
-   * @return the function result
-   * @throws Exception
-   */
-  public abstract <T> T visit(BlockFunction<T> function) throws Exception;
 }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Bound.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Bound.java
index 1fa39ea9..d6358ac7 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Bound.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Bound.java
@@ -16,11 +16,9 @@ package org.apache.baremaps.openstreetmap.model;
 
 import java.util.Objects;
 import java.util.StringJoiner;
-import org.apache.baremaps.openstreetmap.function.EntityConsumer;
-import org.apache.baremaps.openstreetmap.function.EntityFunction;
 
 /** Represents the bounds of an OpenStreetMap dataset. */
-public class Bound implements Entity {
+public final class Bound implements Entity {
 
   private final double maxLat;
 
@@ -81,18 +79,6 @@ public class Bound implements Entity {
     return minLon;
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public void visit(EntityConsumer consumer) throws Exception {
-    consumer.match(this);
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public <T> T visit(EntityFunction<T> function) throws Exception {
-    return function.match(this);
-  }
-
   /** {@inheritDoc} */
   @Override
   public boolean equals(Object o) {
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/DataBlock.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/DataBlock.java
index 1bb88aee..5fa79205 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/DataBlock.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/DataBlock.java
@@ -15,11 +15,9 @@ package org.apache.baremaps.openstreetmap.model;
 
 
 import java.util.List;
-import org.apache.baremaps.openstreetmap.function.BlockConsumer;
-import org.apache.baremaps.openstreetmap.function.BlockFunction;
 
 /** Represents a data block in an OpenStreetMap dataset. */
-public class DataBlock extends Block {
+public final class DataBlock extends Block {
 
   private final List<Node> denseNodes;
   private final List<Node> nodes;
@@ -80,15 +78,4 @@ public class DataBlock extends Block {
     return relations;
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public void visit(BlockConsumer consumer) throws Exception {
-    consumer.match(this);
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public <T> T visit(BlockFunction<T> function) throws Exception {
-    return function.match(this);
-  }
 }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Element.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Element.java
index f1a19d44..d8b3b5e4 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Element.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Element.java
@@ -23,7 +23,10 @@ import org.locationtech.jts.geom.Geometry;
  * Represents an element in an OpenStreetMap dataset. Elements are a basis to 
model the physical
  * world.
  */
-public abstract class Element implements Entity {
+public sealed
+abstract class Element implements Entity
+permits Node, Way, Relation
+{
 
   protected final long id;
 
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Entity.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Entity.java
index 26a2d97f..561f1a20 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Entity.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Entity.java
@@ -14,18 +14,13 @@ package org.apache.baremaps.openstreetmap.model;
 
 
 
-import org.apache.baremaps.openstreetmap.function.EntityConsumer;
-import org.apache.baremaps.openstreetmap.function.EntityFunction;
-
 /**
  * Represents an entity in an OpenStreetMap dataset. Entities are a basis to 
model all the objects
  * in OpenStreetMap.
  */
-public interface Entity {
-
-  /** Visits the entity with the provided entity consumer. */
-  void visit(EntityConsumer consumer) throws Exception;
+public sealed
+interface Entity
+permits Header, Bound, Element
+{
 
-  /** Visits the entity with the provided entity function. */
-  <T> T visit(EntityFunction<T> function) throws Exception;
 }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Header.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Header.java
index 9f3aa9ea..3661315d 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Header.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Header.java
@@ -17,11 +17,9 @@ package org.apache.baremaps.openstreetmap.model;
 import java.time.LocalDateTime;
 import java.util.Objects;
 import java.util.StringJoiner;
-import org.apache.baremaps.openstreetmap.function.EntityConsumer;
-import org.apache.baremaps.openstreetmap.function.EntityFunction;
 
 /** Represents a header entity in an OpenStreetMap dataset. */
-public class Header implements Entity {
+public final class Header implements Entity {
 
   private final Long replicationSequenceNumber;
   private final LocalDateTime replicationTimestamp;
@@ -92,16 +90,6 @@ public class Header implements Entity {
     return writingProgram;
   }
 
-  @Override
-  public void visit(EntityConsumer consumer) throws Exception {
-    consumer.match(this);
-  }
-
-  @Override
-  public <T> T visit(EntityFunction<T> function) throws Exception {
-    return function.match(this);
-  }
-
   @Override
   public boolean equals(Object o) {
     if (this == o) {
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/HeaderBlock.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/HeaderBlock.java
index c046ce0d..69a067af 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/HeaderBlock.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/HeaderBlock.java
@@ -14,11 +14,8 @@ package org.apache.baremaps.openstreetmap.model;
 
 
 
-import org.apache.baremaps.openstreetmap.function.BlockConsumer;
-import org.apache.baremaps.openstreetmap.function.BlockFunction;
-
 /** Represents a header block in an OpenStreetMap dataset. */
-public class HeaderBlock extends Block {
+public final class HeaderBlock extends Block {
 
   private final Header header;
 
@@ -55,15 +52,4 @@ public class HeaderBlock extends Block {
     return bound;
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public void visit(BlockConsumer consumer) throws Exception {
-    consumer.match(this);
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public <T> T visit(BlockFunction<T> function) throws Exception {
-    return function.match(this);
-  }
 }
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Node.java 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Node.java
index a98845ef..7444bac4 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Node.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Node.java
@@ -17,8 +17,6 @@ package org.apache.baremaps.openstreetmap.model;
 import java.util.Map;
 import java.util.Objects;
 import java.util.StringJoiner;
-import org.apache.baremaps.openstreetmap.function.EntityConsumer;
-import org.apache.baremaps.openstreetmap.function.EntityFunction;
 import org.locationtech.jts.geom.Geometry;
 
 /** Represents a node element in an OpenStreetMap dataset. */
@@ -78,18 +76,6 @@ public final class Node extends Element {
     return lat;
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public void visit(EntityConsumer consumer) throws Exception {
-    consumer.match(this);
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public <T> T visit(EntityFunction<T> function) throws Exception {
-    return function.match(this);
-  }
-
   /** {@inheritDoc} */
   @Override
   public boolean equals(Object o) {
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Relation.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Relation.java
index 00ce47af..653f2a1d 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Relation.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Relation.java
@@ -18,8 +18,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.StringJoiner;
-import org.apache.baremaps.openstreetmap.function.EntityConsumer;
-import org.apache.baremaps.openstreetmap.function.EntityFunction;
 import org.locationtech.jts.geom.Geometry;
 
 /** Represents a relation element in an OpenStreetMap dataset. */
@@ -64,18 +62,6 @@ public final class Relation extends Element {
     return members;
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public void visit(EntityConsumer consumer) throws Exception {
-    consumer.match(this);
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public <T> T visit(EntityFunction<T> function) throws Exception {
-    return function.match(this);
-  }
-
   /** {@inheritDoc} */
   @Override
   public boolean equals(Object o) {
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Way.java 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Way.java
index 389980fd..5513b1d5 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Way.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/model/Way.java
@@ -18,8 +18,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.StringJoiner;
-import org.apache.baremaps.openstreetmap.function.EntityConsumer;
-import org.apache.baremaps.openstreetmap.function.EntityFunction;
 import org.locationtech.jts.geom.Geometry;
 
 /** Represents a way element in an OpenStreetMap dataset. */
@@ -63,18 +61,6 @@ public final class Way extends Element {
     return nodes;
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public void visit(EntityConsumer consumer) throws Exception {
-    consumer.match(this);
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public <T> T visit(EntityFunction<T> function) throws Exception {
-    return function.match(this);
-  }
-
   /** {@inheritDoc} */
   @Override
   public boolean equals(Object o) {
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/pbf/PbfEntityReader.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/pbf/PbfEntityReader.java
index 4697481d..fb173fea 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/pbf/PbfEntityReader.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/pbf/PbfEntityReader.java
@@ -17,8 +17,9 @@ package org.apache.baremaps.openstreetmap.pbf;
 import java.io.InputStream;
 import java.util.stream.Stream;
 import org.apache.baremaps.openstreetmap.OsmReader;
-import org.apache.baremaps.openstreetmap.function.BlockEntityConsumer;
+import org.apache.baremaps.openstreetmap.model.DataBlock;
 import org.apache.baremaps.openstreetmap.model.Entity;
+import org.apache.baremaps.openstreetmap.model.HeaderBlock;
 import org.apache.baremaps.stream.StreamException;
 
 /** A utility class for flattening the blocks streamed by a {@link 
PbfBlockReader}. */
@@ -45,7 +46,17 @@ public class PbfEntityReader implements OsmReader<Entity> {
     return reader.stream(inputStream).flatMap(block -> {
       try {
         Stream.Builder<Entity> entities = Stream.builder();
-        block.visit(new BlockEntityConsumer(entities::add));
+        if (block instanceof HeaderBlock headerBlock) {
+          entities.add(headerBlock.getHeader());
+          entities.add(headerBlock.getBound());
+        } else if (block instanceof DataBlock dataBlock) {
+          dataBlock.getDenseNodes().forEach(entities::add);
+          dataBlock.getNodes().forEach(entities::add);
+          dataBlock.getWays().forEach(entities::add);
+          dataBlock.getRelations().forEach(entities::add);
+        } else {
+          throw new StreamException("Unknown block type.");
+        }
         return entities.build();
       } catch (Exception e) {
         throw new StreamException(e);

Reply via email to