At M7, there was nothing that i can remember that internally coerced ids to strings that I can think of. That's the easy answer for M7. As of the latest and what we expect for GA, the answer is a bit more complicated. As you can see, this works as it did in TP2:
gremlin> graph = TinkerGraph.open()
==>tinkergraph[vertices:0 edges:0]
gremlin> graph.addVertex(id,47)
==>v[47]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:1 edges:0], standard]
gremlin> g.V(47)
==>v[47]
gremlin> graph.addVertex(id,48l)
==>v[48]
gremlin> g.V(48)
gremlin> g.V(48l)
==>v[48]
gremlin> g.V("48")
gremlin>
Note that the last couple tries to get it as a String doesn't return anything. So types are intact internally. As of the lastest work, you can configure TinkerGraph with an IdManager:
gremlin> conf = new BaseConfiguration()
==>org.apache.commons.configuration.BaseConfiguration@79f227a9
gremlin> conf.setProperty("gremlin.tinkergraph.vertexIdManager","LONG")
==>null
gremlin> graph = TinkerGraph.open(conf)
==>tinkergraph[vertices:0 edges:0]
gremlin> graph.addVertex(id,47)
==>v[47]
gremlin> graph.addVertex(id,48l)
==>v[48]
gremlin> graph.addVertex(id,"49")
==>v[49]
In the above example the IdManager for vertices is configured with the LongIdManager which basically forces all IDs to Long:
gremlin> g.V().id().map{it.get()getClass()}
==>class java.lang.Long
==>class java.lang.Long
==>class java.lang.Long
which is helpful in some cases because if TinkerGraph knows the types it can do this:
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:3 edges:0], standard]
gremlin> g.V("47")
==>v[47]
gremlin> g.V(47)
==>v[47]
gremlin> g.V(48)
==>v[48]
gremlin> g.V(49)
==>v[49]
gremlin> g.V(49l)
==>v[49]
Note that usage of IdManager allows TinkerGraph to be compliant with the test suite in allowing g.V(v.id().toString()) to work properly.
With respect to: