Hi all,

I have implemented a custom Behviour called WhiteboardBehavior extending
the AbstractDefaultAjaxBehavior. In that class I have a static HashMap like
this,

private static ConcurrentHashMap<Integer,Element> elementMap=new
ConcurrentHashMap<Integer,Element>();

In the constructor of my Behavior class I put elements to the map like this,

public WhiteboardBehavior(String whiteboardId,String whiteboardContent){
        super();
        this.whiteboardId=whiteboardId;
        Element element=new Element(whiteboardContent);

        if(element!=null){
            elementMap.put(element.getId(),element);
        }
}

I am trying to execute some JavaScript codes int he renderHead method using
the above added elements. I did it like this,

public void renderHead(Component component, IHeaderResponse response) {
        super.renderHead(component,response);

        initReferences(response);
        String callbackUrl=getCallbackUrl().toString();
        String whiteboardInitializeScript="" +
                "callbackUrl='"+callbackUrl+"';\n" +
                "whiteboard = bay.whiteboard.Create();\n" +
                "elementCollection=whiteboard.getMainCollection();\n"+
                "whiteboard.getMainCollection().onChange =
function(element){\n"+
                "changedElement=this.getJson(element);\n"+

"Wicket.Ajax.get({u:'"+callbackUrl+"',ep:{editedElement:changedElement}});\n};\n"+

"whiteboard.render(document.getElementById('"+whiteboardId+"'));\n"+
                "whiteboard.setBoundaries(0, 0, 0, 0);\n";

        //Clearing the whiteboard for first client
        IWebSocketConnectionRegistry reg =
IWebSocketSettings.Holder.get(Application.get()).getConnectionRegistry();
        if(reg.getConnections(Application.get()).size()==0){
            elementMap.clear();
        }

       * //Loading existing content for clients join after first one
        if(!elementMap.isEmpty()){
            Map<Integer,Element> sortedElementList = new
TreeMap<Integer,Element>(elementMap);
            JSONArray jsonArray=new JSONArray();
            for (Element e : sortedElementList.values()) {
                jsonArray.put(e.getJSON());
            }

whiteboardInitializeScript+="elementCollection.parseJson('"+jsonArray.toString()+"');";
        }*


response.render(OnDomReadyHeaderItem.forScript(whiteboardInitializeScript));
}

But when renderHead is executed for the first time, the elementMap is
empty. What has gone wrong here?

Thanks!

-- 
Regards
Andun S.L. Gunawardana
Undergraduate
Department of Computer Science And Engineering
University of Moratuwa
Sri Lanka

Blog - http://www.insightforfuture.blogspot.com/
LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703
Twitter -http://twitter.com/AndunSLG

Reply via email to