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

Dan Haywood updated ISIS-651:
-----------------------------

    Description: 
Make JDO PersistenceManagerFactory accessible so can be interacted with outside 
of Isis runtime

Invalidate Isis spec cache by way of class (not just by object).

~~~
need to be able to do similar with the DN metadata:

http://www.datanucleus.org/servlet/jira/browse/NUCCORE-1104

Assuming that there's auto-enhancement within the IDE, this means that JRebel 
picks up each class twice: once for the unenhanced class, then almost 
immediately for the enhanced class.  Therefore, I think that all that may be 
required is to remove the ClassMetaData whenever an unenhanced class is 
reloaded DN's will lazily recreate metadata as required.

An enhancement might be to do the enhancement within the JRebel plugin (and not 
in the IDE).  This would require the enhancement is done in a separate 
classloader; it (obviously!) isn't allowed to reference the java.lang.Class 
being loaded within the plugin itself.  As enhancement does cause this to 
occur, it must be namespaced off to a separate classloader.

resources:
- http://www.datanucleus.org/servlet/wiki/pages/viewpage.action?pageId=6619188  
(Metadata Generation, programmatic running of Enhancement)
- http://markmail.org/message/xn6fowrxqeucac26  (useful forum messages hinting 
on the classloader stuff)
- http://www.datanucleus.org/products/accessplatform/jpa/enhancer.html#api 
(background notes)


  was:
Make JDO PersistenceManagerFactory accessible so can be interacted with outside 
of Isis runtime

Invalidate Isis spec cache by way of class (not just by object).

~~~

further notes:
- the main issue to tackle is bytecode enhancement of the changed files; the 
Eclipse DN plugin does *not* enhance the bytecode before JRebel picks it up.
  - though have seen double loading, so perhaps just ignore any classes not 
enhanced?
- do the enhancement in a separate classloader.

resources:
- http://www.datanucleus.org/servlet/wiki/pages/viewpage.action?pageId=6619188  
(Metadata Generation, programmatic running of Enhancement)
- http://markmail.org/message/xn6fowrxqeucac26  (useful forum messages hinting 
on the classloader stuff)
- http://www.datanucleus.org/products/accessplatform/jpa/enhancer.html#api 
(background notes)



> Prereqs to possible JRebel support
> ----------------------------------
>
>                 Key: ISIS-651
>                 URL: https://issues.apache.org/jira/browse/ISIS-651
>             Project: Isis
>          Issue Type: Improvement
>          Components: Core, Objectstore: JDO
>    Affects Versions: objectstore-jdo-1.3.0, core-1.3.0
>            Reporter: Dan Haywood
>            Assignee: Dan Haywood
>            Priority: Minor
>             Fix For: objectstore-jdo-1.4.0, core-1.4.0
>
>
> Make JDO PersistenceManagerFactory accessible so can be interacted with 
> outside of Isis runtime
> Invalidate Isis spec cache by way of class (not just by object).
> ~~~
> need to be able to do similar with the DN metadata:
> http://www.datanucleus.org/servlet/jira/browse/NUCCORE-1104
> Assuming that there's auto-enhancement within the IDE, this means that JRebel 
> picks up each class twice: once for the unenhanced class, then almost 
> immediately for the enhanced class.  Therefore, I think that all that may be 
> required is to remove the ClassMetaData whenever an unenhanced class is 
> reloaded DN's will lazily recreate metadata as required.
> An enhancement might be to do the enhancement within the JRebel plugin (and 
> not in the IDE).  This would require the enhancement is done in a separate 
> classloader; it (obviously!) isn't allowed to reference the java.lang.Class 
> being loaded within the plugin itself.  As enhancement does cause this to 
> occur, it must be namespaced off to a separate classloader.
> resources:
> - 
> http://www.datanucleus.org/servlet/wiki/pages/viewpage.action?pageId=6619188  
> (Metadata Generation, programmatic running of Enhancement)
> - http://markmail.org/message/xn6fowrxqeucac26  (useful forum messages 
> hinting on the classloader stuff)
> - http://www.datanucleus.org/products/accessplatform/jpa/enhancer.html#api 
> (background notes)



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to