Hi,

On Mon, Aug 12, 2013 at 9:22 AM, Andun Sameera <[email protected]> wrote:

> 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();
>         }
>

I guess the map is cleared here ^^.
The web socket connections are opened after the page is loaded.


>
>        * //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