[Building Sakai] How to get site id

Diego del Blanco Orobitg diego.delblanco at setival.com
Tue Jun 23 04:32:46 PDT 2009


Hi Steve!!!
 
I use ToolManager as follows:
 

import org.sakaiproject.tool.cover.ToolManager;
public class ReivenListBean {
....

   private String getCurrentSiteId(){
  System.out.println(" ----------- ReivenListBean.getCurrentSiteId ------");
  String currentSiteId = null;
        Placement thisPlacement = ToolManager.getCurrentPlacement();
  if (thisPlacement!=null){
   System.out.println(" > toolManager.currentPlacement---> NOT NULL");
   if(thisPlacement != null)
    currentSiteId = thisPlacement.getContext();
  }else{
   System.out.println(" > toolManager.currentPlacement ---> NULL");
  }
     return currentSiteId;
   }
   
....   
}
 
But I also have tried doing the same as
http://bugs.sakaiproject.org/confluence/display/BOOT/Using+the+ToolManager+S
ervice suggests with the same result.
 
Thank you very much in advance.

-----Mensaje original-----
De: Steve Swinsburg [mailto:s.swinsburg at lancaster.ac.uk] 
Enviado el: martes, 23 de junio de 2009 13:07
Para: Diego del Blanco Orobitg
CC: Sakai Dev Mailing List
Asunto: Re: [Building Sakai] How to get site id

Is theToolManager dependency injected correctly? How are you injecting  
it? Via Spring directly (setting up your impl as a bean and setting it  
as a property etc) or getting it from the ComponentManager? Post your  
relevant injection code.

cheers,
Steve

---
Steve Swinsburg
Portal Systems Developer
Centre for e-Science
Lancaster University
Lancaster
LA1 4YT

email: s.swinsburg at lancaster.ac.uk
phone: +44 (0) 1524 594870







On 23 Jun 2009, at 11:21, Diego del Blanco Orobitg wrote:

> Dear all,
>
> I'm developing a new Sakai tool to be able to import IMS QTI and IMS  
> CP to
> Samigo, Mneme and Melete, respectively, through these three tools  
> Services
> to do that.
>
> The problem I have is that toolManager.getCurrentPlacement is null  
> and,
> thus, I cannot get siteId to know which is the current site I am  
> visiting.
> This makes Samigo, Mneme and Melete services not to know to which  
> site they
> have to associate imported files. And, thus, import process fails.
> As far as I know, the only way to get Site Id is through
> toolManager.getCurrentPlacement().getContext(), but I cannot get it  
> in this
> way. Do you know if there is any? I also have used
> PortalService.getCurrentSiteId() but this function is based in the  
> former
> and thus, it doesn't work either.
>
> As Stephen Marquard has suggested me "getCurrentPlacement() is  
> usable when
> it is called by code running in
> the context of a /portal/tool/toolid/... http request. Outside that  
> (for
> example in service code called by some other process,
> e.g. a maintenance thread or webservice) it's not set or meaningful.
> Generally service code should not rely on getCurrentPlacement() as  
> this
> breaks the SOA paradigm (i.e. it makes the service code only usable  
> from the
> tool UI code)". Considering this pointing, I've tried to get
> toolManager.getCurrentPlacement().getContext() from one of the beans  
> of my
> tool, instead to leave Samigo Services to do it for my tool and...I'm
> getting the same NPE!!!.
>
> The following scriptlet is inside one of my tool's bean:
>    if (ToolManager.getCurrentPlacement()!=null){
>     System.out.println(" > toolManager.currentPlacement---> NOT  
> NULL");
>    }else{
>     System.out.println(" > toolManager.currentPlacement ---> NULL");
>    }
> And I get
>
>> toolManager.currentPlacement ---> NULL
>
> I really don't know why!!!!. I have analyzed the link to my tool in  
> Sakai
> main page, to see which pattern it follows and be able to check if  
> it is
> valid for a tool or not. And here you have what I've found:
> Site-info
> <!-- start Tool Body -->
> <div class="portletMainWrap">
> <iframe name="Main9bd95d6ax328fx4a14xb2c0xfbbaf22a6145"
> id="Main9bd95d6ax328fx4a14xb2c0xfbbaf22a6145"
> title="Informaci&#243;n del sitio "
> class ="portletMainIframe"
> height="50"
> width="100%"
> frameborder="0"
> marginwidth="0"
> marginheight="0"
> scrolling="auto"
>
>
src="http://localhost:8080/portal/tool/9bd95d6a-328f-4a14-b2c0-fbbaf22a6145?
> panel=Main">
> </iframe>
> </div>
> <!-- end Tool Body -->
> My Tool
>
> <!-- start Tool Body -->
> <div class="portletMainWrap">
> <iframe name="Maine4759e5axcc51x44dcxb9b2x9be7f28ee6ca"
> id="Maine4759e5axcc51x44dcxb9b2x9be7f28ee6ca"
> title="Reiven Content "
> class ="portletMainIframe"
> height="50"
> width="100%"
> frameborder="0"
> marginwidth="0"
> marginheight="0"
> scrolling="auto"
>
>
src="http://localhost:8080/portal/tool/e4759e5a-cc51-44dc-b9b2-9be7f28ee6ca?
> panel=Main">
> </iframe>
> </div>
> <!-- end Tool Body -->
> That is, the request is very similar to the one generated for other  
> sakai
> tools (site-info, in this case). So, why  
> ToolManager.getCurrentPlacement()
> is not usable here? Is any other way of getting Site id?
>
> I really don't know if it is a problem of tool configuration or if I  
> am
> missing some libraries.
>
> Thank you very much in advance.
>
> -- Kind regards,
>       Diego
>
> _______________________________________________
> sakai-dev mailing list
> sakai-dev at collab.sakaiproject.org
> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>
> TO UNSUBSCRIBE: send email to
sakai-dev-unsubscribe at collab.sakaiproject.org 
>  with a subject of "unsubscribe"




More information about the sakai-dev mailing list