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 >
