diff --git a/wrappers/java/WrapGmsh.i b/wrappers/java/WrapGmsh.i
index a8d235cd6e9eb01da8bfb42b90f50f6826a72fed..bc002a6095793b45accf03e6740f5ad48c60bd29 100644
--- a/wrappers/java/WrapGmsh.i
+++ b/wrappers/java/WrapGmsh.i
@@ -105,11 +105,27 @@ namespace std {
 %template (GRegionListWrapper) ListWrapperGmsh<GRegion*>;
 %template (GRegionListIterator) ListIteratorGmsh<GRegion*>;
 
+%extend GModel {
 
+  std::vector<GRegion*> bindingsGetRegions()
+  {
+    return std::vector<GRegion*> ($self->firstRegion(), $self->lastRegion());
+  }
 
+  std::vector<GFace*> bindingsGetFaces()
+  {
+    return std::vector<GFace*> ($self->firstFace(), $self->lastFace());
+  }
 
+  std::vector<GEdge*> bindingsGetEdges()
+  {
+    return std::vector<GEdge*> ($self->firstEdge(), $self->lastEdge());
+  }
 
+  std::vector<GVertex*> bindingsGetVertices()
+  {
+    return std::vector<GVertex*> ($self->firstVertex(), $self->lastVertex());
+  }
 
-
-
+}