You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Andrus Adamchik (JIRA)" <ji...@apache.org> on 2013/03/18 09:38:16 UTC

[jira] [Commented] (CAY-1803) Define toString() in path expressions

    [ https://issues.apache.org/jira/browse/CAY-1803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13604942#comment-13604942 ] 

Andrus Adamchik commented on CAY-1803:
--------------------------------------

We may want to expand the scope of toString improvements, or maybe implement Expression.toStringBuilder()... Analyzing my profiling logs, and this stack appears quite often:

2013/03/15 19:02:00 qtp30216319-58      at java.security.AccessController.doPrivileged(Native Method)
2013/03/15 19:02:00 qtp30216319-58      at java.io.PrintWriter.<init>(PrintWriter.java:78)
2013/03/15 19:02:00 qtp30216319-58      at java.io.PrintWriter.<init>(PrintWriter.java:62)
2013/03/15 19:02:00 qtp30216319-58      at org.apache.cayenne.exp.Expression.toString(Expression.java:667)
2013/03/15 19:02:00 qtp30216319-58      at java.lang.String.valueOf(String.java:2826)
2013/03/15 19:02:00 qtp30216319-58      at java.lang.StringBuilder.append(StringBuilder.java:115)
2013/03/15 19:02:00 qtp30216319-58      at org.apache.cayenne.query.SelectQueryMetadata.resolve(SelectQueryMetadata.java:65)
2013/03/15 19:02:00 qtp30216319-58      at org.apache.cayenne.query.SelectQuery.getMetaData(SelectQuery.java:210)
2013/03/15 19:02:00 qtp30216319-58      at org.apache.cayenne.util.ObjectContextQueryAction.<init>(ObjectContextQueryAction.java:81)
2013/03/15 19:02:00 qtp30216319-58      at org.apache.cayenne.access.DataContextQueryAction.<init>(DataContextQueryAction.java:49)
2013/03/15 19:02:00 qtp30216319-58      at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:930)

It does cache key generation... this should be sped up.
                
> Define toString() in path expressions
> -------------------------------------
>
>                 Key: CAY-1803
>                 URL: https://issues.apache.org/jira/browse/CAY-1803
>             Project: Cayenne
>          Issue Type: Improvement
>            Reporter: Andrus Adamchik
>            Assignee: Andrus Adamchik
>            Priority: Trivial
>             Fix For: 3.2M1
>
>
> Expression.toString() is pretty heavy:
>  @Override
>     public String toString() {
>         StringWriter buffer = new StringWriter();
>         PrintWriter pw = new PrintWriter(buffer);
>         encodeAsString(pw);
>         pw.close();
>         buffer.flush();
>         return buffer.toString();
>     }
> We didn't bother much about it, as it wasn't supposed to be called in runtime... Well it is sometimes:
> SelectTranslator,java:
> 433 String labelPrefix = pathExp.toString().substring("db:".length());
> And I am seeing this line occasionally in my app profiling reports. So we need to override "toString" at least for ASTObjPath and ASTDbPath with a lighter implementation

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira