Mercurial > hg > Members > shoshi > TreeCMSv1
view src/treecms/proto/simple/SimpleTreeBuilder.java @ 23:a3f8f5da4947
modify SimpleNode compatible for multithread
author | ShoshiTAMAKI |
---|---|
date | Sun, 24 Oct 2010 13:49:29 +0900 |
parents | e950264f82d3 |
children | f0c35d444982 |
line wrap: on
line source
package treecms.proto.simple; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import treecms.proto.api.Node; import treecms.proto.api.TreeBuilder; public class SimpleTreeBuilder implements TreeBuilder { private Node m_root; private ConcurrentHashMap<Thread,NodeUUID> m_idMap; public SimpleTreeBuilder() { m_idMap = new ConcurrentHashMap<Thread,NodeUUID>(); m_root = new SimpleNode(generateUUID()); } public Node getContents() { return m_root; } public Node createNode() { return new SimpleNode(generateUUID()); } public String generateUUID() { NodeUUID uuid; uuid = m_idMap.get(Thread.currentThread()); if(uuid == null){ uuid = new NodeUUID(); m_idMap.put(Thread.currentThread(),uuid); } return uuid.getAndIncrement(); } private class NodeUUID { private UUID m_uuid; private long m_counter; public NodeUUID() { m_uuid = UUID.randomUUID(); m_counter = 0; } public String getAndIncrement() { String ret = m_uuid.toString() + "-" + m_counter; m_counter++; return ret; } } }