Sto usando la 2.1.3 e noto problemi (che c'erano anche nella 2.1 e nella 2.1.2) quando si imposta un campo Reference relativo ad una relazione 1:N e la scheda relata ha una Description che finisce con una riga vuota. Non mi sembra si verifichino in tutti i casi, comunque riesco a riprodurlo in modo consistente in questo modo:
Ho una classe Site ed una class location, con dominio SiteLocation da Site a Location del tipo 1:N, nella Location c'e' il campo Reference chiamato "InSite".
Ho due schede Site, una funziona e l'altra no, nel senso che se modifico una scheda Location e provo ad impostare il campo InSite alla scheda Site che non funziona, ottengo il traceback:
<pre>
Call: services/json/management/modcard/updatecard
--------------------------------------------------
Error: java.lang.NumberFormatException: For input string: "Site che non funziona"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:438)
at java.lang.Long.parseLong(Long.java:478)
at org.cmdbuild.dao.entrytype.attributetype.AbstractReferenceAttributeType.convertNotNullValue(AbstractReferenceAttributeType.java:16)
at org.cmdbuild.dao.entrytype.attributetype.AbstractReferenceAttributeType.convertNotNullValue(AbstractReferenceAttributeType.java:5)
at org.cmdbuild.dao.entrytype.attributetype.AbstractAttributeType.convertValue(AbstractAttributeType.java:17)
at org.cmdbuild.dao.entry.DBEntry.toNative(DBEntry.java:124)
at org.cmdbuild.dao.entry.DBEntry.setOnly(DBEntry.java:119)
at org.cmdbuild.dao.entry.DBCard.set(DBCard.java:17)
at org.cmdbuild.dao.entry.DBCard.set(DBCard.java:7)
at org.cmdbuild.data.store.DataViewStore.fillCard(DataViewStore.java:288)
at org.cmdbuild.data.store.DataViewStore.update(DataViewStore.java:228)
at org.cmdbuild.logic.data.access.DefaultDataAccessLogic.updateCard(DefaultDataAccessLogic.java:538)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
at sun.proxy.$Proxy155.updateCard(Unknown Source)
at org.cmdbuild.servlets.json.management.ModCard.updateCard(ModCard.java:289)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.cmdbuild.servlets.JSONDispatcher.dispatch(JSONDispatcher.java:94)
at org.cmdbuild.servlets.JSONDispatcher.doPost(JSONDispatcher.java:54)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.filters.ExpiresFilter.doFilter(ExpiresFilter.java:1179)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:142)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.cmdbuild.filters.PatchManagerFilter.doFilter(PatchManagerFilter.java:33)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:39)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
</pre>
Il Site che non funziona, visto da psql con \x e' il seguente:
<pre>
cmdbDEV=# \x
Expanded display is on.
cmdbDEV=# select * from "Site" where "Code"='Site che non funziona' and "Status"='A';
-[ RECORD 1 ]---+----------------------------
Id | 353
IdClass | "Site"
Code | Site che non funziona
Description | Site che non funziona
|
Status | A
User | admin
BeginDate | 2013-06-25 13:33:34.349569
Notes |
Address1 | Piazza Garibaldi, 1
Address2 | Palazzo Garibaldi, piano 14
ProvinceOrState | Bologna
PostalCode | 40131
Country | 137
OwnedBy | 350
</pre>
Notate che la Description finisce con una riga vuota. In questi casi anche la visualizzazione della Storia della scheda presenta delle anomalie, che non vi descrivo dettagliatamente se non vi serve per ulteriore troubleshooting.