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