[ http://issues.apache.org/jira/browse/TAPESTRY-617?page=all ]
     
Brian K. Wallace resolved TAPESTRY-617:
---------------------------------------

    Fix Version: 3.0.5
     Resolution: Fixed
      Assign To: Brian K. Wallace

Added context class loader parameter to Ognl.getValue call

> get static field fail with use table component, bug report like bug 
> tapestry-408
> --------------------------------------------------------------------------------
>
>          Key: TAPESTRY-617
>          URL: http://issues.apache.org/jira/browse/TAPESTRY-617
>      Project: Tapestry
>         Type: Bug

>   Components: Contrib
>     Versions: 3.0.3
>  Environment: weblogic+windows2000+jdk1.4.2
>     Reporter: samwen
>     Assignee: Brian K. Wallace
>      Fix For: 3.0.5

>
> bug report like bug tapestry-408 
>       in my table component define
>       columns="id.bigClientId:title1:[0].id.bigClientId, 
>    contractDate:mydate:@[EMAIL PROTECTED]([0].contractDate)"
>       it can't access static field !!
>       weblogic 8.1.3+windows 2000+eclipse
>       /* when weblogic classpath  include ognl.jar
>       *  mywebapp
>     *    +web-inf
>     *      |
>     *      +lib  ognl.jar;tapestry-3.x.x.jar;  tapestry-contrib-3.x.x.jar;
>       *   
>     */
>       
>   //org.apache.tapestry.contrib.table.model.ognl.OgnlTableColumnEvaluator.java
>    
>       public Object getColumnValue(ITableColumn objColumn, Object objRow)
>       {
>               // If no expression is given, then this is dummy column. Return 
> something.
>               if (m_strExpression == null || m_strExpression.equals(""))
>                       return "";
>               if (m_objParsedExpression == null)
>               {
>                       synchronized (this)
>                       {
>                               if (m_objParsedExpression == null)
>                                       m_objParsedExpression =
>                                               
> OgnlUtils.getParsedExpression(m_strExpression);
>                       }
>               }
>               try
>               {
>                       Object objValue = Ognl.getValue(m_objParsedExpression, 
> objRow);
>                       return objValue;
>               }
>               catch (OgnlException e)
>               {
>                       LOG.error(
>                               "Cannot use column expression '" + 
> m_strExpression + "' in row",
>                               e);
>                       return "";
>               }
>       }
>  patch:
> //     
> org.apache.tapestry.contrib.table.model.ognl.OgnlTableColumnEvaluator.java
>  /**
>        * @see 
> org.apache.tapestry.contrib.table.model.simple.ITableColumnEvaluator#getColumnValue(ITableColumn,
>  Object)
>        */
>       public Object getColumnValue(ITableColumn objColumn, Object objRow)
>       {
>               // If no expression is given, then this is dummy column. Return 
> something.
>               if (m_strExpression == null || m_strExpression.equals(""))
>                       return "";
>               if (m_objParsedExpression == null)
>               {
>                       synchronized (this)
>                       {
>                               if (m_objParsedExpression == null)
>                                       m_objParsedExpression =
>                                               
> OgnlUtils.getParsedExpression(m_strExpression);
>                       }
>               }
>               try
>               {
>                       
>                       ClassResolver resolver= new ClassResolver(){
>                               public Class classForName(String className, Map 
> context) throws ClassNotFoundException {
>                                       ClassLoader contextClassLoader = 
> Thread.currentThread().getContextClassLoader();
>                                       return Class.forName(className, true, 
> contextClassLoader);
>                               }
>                       };
>                       Map context = Ognl.createDefaultContext(objRow, 
> resolver);
>                       Object objValue= Ognl.getValue(m_objParsedExpression, 
> context, objRow);
>                        
>                       //Object objValue = 
> Ognl.getValue(m_objParsedExpression, objRow);
>                       return objValue;
>               }
>               catch (OgnlException e)
>               {
>                       System.out.println("ognl exception!!");
>                       e.printStackTrace();
>                       LOG.error(
>                               "Cannot use column expression '" + 
> m_strExpression + "' in row",
>                               e);
>                       return "";
>               }catch(RuntimeException ex){
>                       System.out.println("throw Exception 
> OgnlTableColumnEvaluator!!");
>                       ex.printStackTrace();
>                       throw ex;
>               }catch(Exception ex){
>                       ex.printStackTrace();
>                       throw new RuntimeException(ex);
>               }
>               
>       }
> weblogic 8.1.3+windows 2000+eclipse
>       /* when weblogic classpath  include 
> ognl.jar;tapestry-3.x.x.jar;tapestry-contrib-patch.jar
>       *  mywebapp
>     *    +web-inf
>     *      |
>     *      +lib  ognl.jar;tapestry-3.x.x.jar;  tapestry-contrib-3.x.x.jar;
>       *   
>     */
>    and run Ok!

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to