[ 
https://issues.apache.org/jira/browse/ISIS-2029?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dan Haywood updated ISIS-2029:
------------------------------
    Fix Version/s: 1.19.0

> Using Application Identity (e.g. settings module) with .orm file leads to 
> Webui exception
> -----------------------------------------------------------------------------------------
>
>                 Key: ISIS-2029
>                 URL: https://issues.apache.org/jira/browse/ISIS-2029
>             Project: Isis
>          Issue Type: Bug
>          Components: Core, Core: Viewer: Wicket
>    Affects Versions: 1.16.2
>            Reporter: Vladimir Nisevic
>            Priority: Major
>             Fix For: 1.19.0
>
>         Attachments: stacktrace.txt
>
>
> h2.Problem description
> I want to use settings module (incode or previous isis-addons) so that the 
> tables are persisted in custom database schema (different than isissettings).
> In order to achieve this I have created a custom .orm file e.g.
>  
> package-custom.orm 
> {code:java}
> <?xml version="1.0" encoding="UTF-8" ?>
> <orm xmlns="http://xmlns.jcp.org/xml/ns/jdo/orm";
>      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/jdo/orm 
> http://xmlns.jcp.org/xml/ns/jdo/orm_3_0.xsd";>
> <package name="org.isisaddons.module.settings.dom.jdo">
>     <class name="ApplicationSettingJdo" schema="myschema" 
> table="IsisAppSetting"/>
>     <class name="UserSettingJdo" schema="myschema" table="IsisUserSetting"/>
> </package>
> </orm>
> {code}
> and refer the file in persistor_datanucleus.properties
> {code:java}
> # schema name override
> isis.persistor.datanucleus.impl.datanucleus.Mapping=custom{code}
>  
> I can create single ApplicationSetting thru WebUI but if I have more than one 
> persisted, here the WebUI exception I get in WebUI
> {code:java}
> Caused by:
> org.datanucleus.exceptions.NucleusUserException
> Identity 
> "interface.MQTT.activated[OID]org.incode.example.settings.dom.jdo.ApplicationSettingJdo"
>  is assigned to class 
> "org.incode.example.settings.dom.jdo.ApplicationSettingJdo", but its not the 
> correct object-id type for this class.
> org.datanucleus.store.AbstractStoreManager#manageClassForIdentity(AbstractStoreManager.java:937)
> org.datanucleus.ExecutionContextImpl#getClassDetailsForId(ExecutionContextImpl.java:3385)
> org.datanucleus.ExecutionContextImpl#findObjects(ExecutionContextImpl.java:3251){code}
>  
> I believe the root cause is that Datanucleus thinks somehow that the 
> ApplicationSetting has not Application Identity which it has since field key 
> is primary key - but only in the case when retreiving more then one entity 
> from database.
>  
> All works fine when creating new instance ApplicationSetting or reading it 
> from database by key. The command "Settings --> listAll" fails.
>  
> I tried also to adapt the .orm file e.g. but it didn't helped.
> {code:java}
> <package name="org.incode.example.settings.dom.jdo">
>     <class name="ApplicationSettingJdo" identity-type="application" 
> schema="myschema" table="IsisAppSetting">
>         <field name="key" primary-key="true"/>
>     </class>
>     <class name="UserSettingJdo" identityType="application" schema="myschema" 
> table="IsisUserSetting"/>
> </package>{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to