[jira] Commented: (JDO-467) Named PMF proposal / JDOHelper
Web Server forum
Back To The Forum Home!Search!Private Messaging System

Web Server Talk Web Server Talk > Web Servers reviews > Apache Server configuration support > Apache JDO Project > [jira] Commented: (JDO-467) Named PMF proposal / JDOHelper




  Last Thread   Next Thread Next
  Show Printable Version Email this Page Subscribe to this Thread      Post New Thread    Post A Reply      

    [jira] Commented: (JDO-467) Named PMF proposal / JDOHelper  
Matthew T. Adams (JIRA)


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
03-03-07 12:11 AM


[ https://issues.apache.org/jira/brow...action_12477433 ]

Matthew T. Adams commented on JDO-467:
--------------------------------------

Synopsis of discussion on conf call on Fri 2 Mar 07 follows.

NOTE:  See questions at the end of this comment!

* PMF already has proposed method getPersistenceUnitName() for 2.1 -- no fur
ther changes required
* JDOHelper will have the following changes:
* Add:  public static final String JDO_CONFIG_RESOURCE_NAME = "jdo.xml";
* Add:  public static PersistenceManagerFactory getPersistenceManagerFactory
() { return  getPersistenceManagerFactory((String)nul
l); }
* Change:  Semantics of methods getPersistenceManagerFactory(String resource
) & getPersistenceManagerFactory(String resource, ClassLoader loader) to ref
lect that if the resource argument is null, then JDOHelper will look for the
 jdo.xml file and find a
persistence-manager-factory element without a persistence-unit-name attribut
e, and that if the resource argument is non-null, it is taken as a persisten
ce unit name if a jdo.xml is found in the expected location (META-INF) and a
s a properties file resourc
e name if there is no jdo.xml found.

* Add a default no-op implementation class DefaultInstanceLifecycleListener 
to javax.jdo.listener so people can extend it and only implement the methods
 they need to; otherwise, they'll have to implement no-op methods for those 
that they do not wish to.

* jdo.xml schema
* Rename to jdoconfig.xsd and root element to jdoconfig to match jdoquery el
ement (no dash).
* Add documentation
* Ensure one instance-lifecycle-listener element per implementing class

Questions:

Q:  If a jdo.xml is found but there is no persistence-factory-manager elemen
t whose name attribute matches the resource, should we throw JDOUserExceptio
n or fall back to JDO 2.0 & prior behavior, looking for a properties resourc
e by the given resource?

Q:  If both a jdo.xml and persistence.xml are found, which has precedence?

Q:  The persistence.xml file is required to be in the META-INF/ folder withi
n the persistence archive.  What is proposed in JDO 2.1 to align with JPA's 
concept of a persistence archive?


> Named PMF proposal / JDOHelper enhancements
> -------------------------------------------
>
>                 Key: JDO-467
>                 URL: https://issues.apache.org/jira/browse/JDO-467
>             Project: JDO
>          Issue Type: New Feature
>          Components: api2, api2-legacy
>    Affects Versions: JDO 2 maintenance release 1
>            Reporter: Matthew T. Adams
>         Attachments: jdo-config.xsd.version-01.txt
>
>
> From the email on the expert group & jdo-dev alias:
> This is a proposal we discussed on the Fri Feb 23 JDO conf call.  Please
> review and discuss.
> Overview:
> Currently, there is no way to bootstrap a JDO implementation completely
> externally to the source code.  The developer is required to provide at
> least a resource name that identifies a java.util.Properties file on the
> classpath that can configure a single PMF.  This makes deployment in
> different environments more challenging than necessary.
> Motivation:
> * Source code is required to be aware of external configuration:
>     * In all current JDOHelper.getPersistenceManagerFactory APIs and
>     * in order to configure listeners.
> * Aligns JDO bootstrapping with JPA bootstrapping concepts.
> Proposed Solution:
> * Introduce new API methods and JDO equivalent of the JPA persistence
> unit concepts, including a jdo.xml file that provides for the
> configuration of one or more named PMFs.
> Details:
> * PersistenceManagerFactory additions
> /** Returns the persistence unit name of this PMF.  It's the JPA
> persistence unit name if configured via persistence.xml or the JDO
> persistence unit name if configured via javax.jdo.xml. */
> public String getName();
> * JDOHelper API additions
> /** The default name of the JDO configuration file. */
> public static final String DEFAULT_JDO_CONFIG_RESOURCE_NAME =
> "javax.jdo.xml";
> /** The name of the default persistence unit. */
> public static final String DEFAULT_PMF_NAME = "default";
> /** Gets the PMF named "default" in the resource "javax.jdo.xml" found
> via the current ClassLoader. */
> public static PersistenceManagerFactory getPersistenceFactoryManager() 
23;
>     return  getPersistenceFactoryManagerByName(DEFAU
LT_PMF_NAME);
> }
> /** Gets the PMF named pmfName in the resource "javax.jdo.xml" found via
> the current ClassLoader. */
> public static PersistenceManagerFactory
>  getPersistenceManagerFactoryByName(Strin
g pmfName) {
>     return  getPersistenceFactoryManagerByName(DEFAU
LT_PMF_NAME,
> DEFAULT_JDO_CONFIG_RESOURCE_NAME);
> }
> /** Gets the PMF named pmfName in the resource named resourceName found
> via the current ClassLoader. */
> public static PersistenceManagerFactory
>  getPersistenceManagerFactoryByName(Strin
g pmfName, String resourceName)
> {
>     return  getPersistenceFactoryManagerByName(DEFAU
LT_PMF_NAME,
> DEFAULT_JDO_CONFIG_RESOURCE_NAME, getClass().getClassLoader());
> }
> /** Gets the PMF named pmfName in the resource named resourceName found
> via the current ClassLoader. */
> public static PersistenceManagerFactory
>  getPersistenceManagerFactoryByName(Strin
g pmfName, String resourceName,
> ClassLoader loader) {
>     // reads resource resourceName via given loader
>     // configures & returns PMF with the given name
> }
> * Possibilities for DEFAULT_JDO_CONFIG_RESOURCE_NAME value:
>     need to determine file name (similar to persistence.xml)
>     javax.jdo.xml
>     jdo.xml
>     ...
> * Proposal for JDO persistence unit configuration XML file
>     * Could be more like Spring beans.xml (supporting references, etc.)
>     * Note:  Square brackets indicate optional elements/attributes
> <jdo-config>
>     [<extension> elements wherever appropriate]
>
>     <!-- Can use attributes for standardized properties -->
>     <!-- Can also support vendor-specific attributes and still validate
> against schema -->
>     <persistence-manager-factory
>         [name="default"] <!-- no name implies only the default PMF,
> named "default"; can only be one per file -->
>         [resource="..."] <!-- convenient for backward compatibility --
>
>
>         [class="xcalia.ic.jdo.PersistenceManagerFactory"]
>         [connection-driver="..."]
>         [connection-url="..."]
>         [connection-user-name="..."]
>         [connection-password="..."]
>         [...] 
>         <!-- or XML-friendly <property> elements -->
>         [<property name="javax.jdo...." value="..."/>]
>         [<property name="javax.jdo...." value="..."/>]
>         [<property name="xcalia.ic...." value="..."/>]
>         [...]
>
>         <!-- ...and/or properties in java.util.Properties file format?
> overrides <property> elements? -->
>         <!-- This allows people to continue to use good, old
> java.util.Properties format if they want -->
>         <properties><![CDATA[
>             javax.jdo....=...
>             javax.jdo....=...
>             xcalia.ic....=...
>             ...
>         ]]></properties>
>         <!-- This provides a way (currently, the only way) to configure
> listeners outside of the code -->
>         <!-- We'd have to address any class loading issues, since we're
> only given a class name -->
>         <!-- These should have javax.jdo.listener.... property &
> property value equivalents in order to keep old-fashioned
> java.util.Property-formatted values consistent with these values -->
>         <!-- Method names default to names of corresponding interfaces;
> if not present on listener-class, they're a no-op or not even called -->
>         [<instance-lifecycle-listener
>             listener-class="my.jdo.InstanceListener"
>             classes-observed="my.domain.Foo,my.domain.Bar,.."
>             [static-factory-method="..."]
>             [pre-attach="preAttach"]
>             [post-attach="postAttach"]
>             [pre-store="preStore"]
>             [...]
>         />]
>
>         <!-- The <instance-lifecycle-listener> element is sufficient,
> but we could provide elements for each of the listener types -->
>         [<attach-lifecycle-listener
>             class="..."
>             [factory-method="..."]
>             [pre-attach="preAttach"]
>             [post-attach="postAttach"]
>         />]
>         [...]
>         <!-- Can optionally include <jdo>, <orm> and <jdoquery> elements
> here in order to override annotations, or developer-provided .jdo, .orm,
> and/or .jdoquery files (from Erik Bengston) -->
>         <!-- Can add attribute to <jdo>, <orm>, and <jdoquery> to allow
> for the specifiation of another resource or set of resources on the
> classpath (from Craig Russell), for example: -->
>         <jdo
> resources="META-INF/production-1;META-INF/production-2;..."/>
>
>     </persistence-manager-factory>
> </jdo-config>

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.







[ Post a follow-up to this message ]



    Sponsored Links  




 





   All times are GMT. The time now is 05:14 AM.      Post New Thread    Post A Reply      
  Last Thread   Next Thread Next


Most Popular forums 

Forum Jump:
Rate This Thread:

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is OFF
 
Medical and Health forum | Computer Games Reviews | Graphics design forum

Back To The Top
Home | Usercp | Faq | Register