View Javadoc

1   package net.sf.cantina.tags;
2   
3   import org.apache.log4j.Logger;
4   
5   import java.util.Locale;
6   
7   import net.sf.cantina.util.Localizer;
8   import net.sf.cantina.util.BeanUtils;
9   import net.sf.cantina.Document;
10  import net.sf.cantina.DataSource;
11  import net.sf.cantina.exceptions.ObjectNotFoundException;
12  
13  import javax.servlet.jsp.JspException;
14  import javax.servlet.jsp.PageContext;
15  import javax.servlet.jsp.tagext.TagSupport;
16  
17  /***
18   * @author Stephane JAIS
19   */
20  public class DefineTag
21    extends TagSupport
22  {
23    private static final Logger logger = Logger.getLogger(DefineTag.class);
24    private String documentId;
25    private Locale locale;
26    private String id;
27    private String property;
28  
29    public String getProperty()
30    {
31      return property;
32    }
33  
34    public void setProperty(String property)
35    {
36      this.property = property;
37    }
38  
39    public String getId()
40    {
41      return id;
42    }
43  
44    public void setId(String id)
45    {
46      this.id = id;
47    }
48  
49  
50    public String getScope()
51    {
52      return scope;
53    }
54  
55    public void setScope(String scope)
56    {
57      this.scope = scope;
58    }
59  
60    private String scope;
61  
62    public String getDocumentId()
63    {
64      return documentId;
65    }
66  
67    public void setDocumentId(String documentId)
68    {
69      this.documentId = documentId;
70    }
71  
72    public String getLocale()
73    {
74      return locale.toString();
75    }
76  
77    public void setLocale(String localeString)
78    {
79      this.locale = Localizer.parseLocaleString(localeString);
80    }
81  
82    public int doStartTag()
83    throws JspException
84    {
85      Locale locale;
86      if (this.locale == null)
87        locale = pageContext.getResponse().getLocale();
88      else
89        locale = this.locale;
90      try
91      {
92        logger.debug("Loading document ["+documentId+"] in locale ["+locale+"]");
93        Document doc = DataSource.getInstance().loadDocument(documentId);
94        int scopeConstant = scope == null ? PageContext.PAGE_SCOPE : TagUtils.getScope(scope);
95        if (property == null)
96          pageContext.setAttribute(id,doc.getContentAsString(locale),scopeConstant);
97        else
98          pageContext.setAttribute(id,BeanUtils.getProperty(doc,property), scopeConstant);
99      } catch (ObjectNotFoundException e )
100     {
101       logger.warn("Document id ["+documentId+"] was not found.");
102     }
103     catch (Exception e)
104     {
105       throw new JspException(e);
106     }
107     return SKIP_BODY;
108   }
109 
110   public void release()
111   {
112     documentId = null;
113     locale = null;
114     id = null;
115     scope = null;
116   }
117 
118 }