You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Nikita Timofeev (JIRA)" <ji...@apache.org> on 2018/05/23 10:51:00 UTC

[jira] [Updated] (CAY-2333) Project XML extensions

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

Nikita Timofeev updated CAY-2333:
---------------------------------
    Fix Version/s:     (was: 4.1.M2)
                   4.2.M1

> Project XML extensions
> ----------------------
>
>                 Key: CAY-2333
>                 URL: https://issues.apache.org/jira/browse/CAY-2333
>             Project: Cayenne
>          Issue Type: Improvement
>          Components: Modeler, Non-GUI Tools
>    Affects Versions: 4.1.M1
>            Reporter: Nikita Timofeev
>            Assignee: Nikita Timofeev
>            Priority: Major
>             Fix For: 4.2.M1
>
>
> Cayenne need flexible project XML extensions mechanism to allow attach some meta information to project, that will not affect runtime.
> Use cases can be following:
> * General comments for entities, attributes and relationships
> * Reverse engineering config
> * Cgen config
> * ER and Class diagram
> Possible linked tasks CAY-400 and CAY-56
> Here is main API for project extensions:
> {code}
> public interface ProjectExtension {
>     /**
>      * @return delegate that handle loading phase of XML processing
>      */
>     LoaderDelegate createLoaderDelegate();
>     /**
>      * @return delegate that handle saving phase of XML processing
>      */
>     SaverDelegate createSaverDelegate();
> }
> public interface LoaderDelegate {
>     /**
>      * @return target namespace that this extension is using
>      */
>     String getTargetNamespace();
>     /**
>      * Create handler that will handle parsing process further.
>      */
>     NamespaceAwareNestedTagHandler createHandler(NamespaceAwareNestedTagHandler parent, String tag);
> }
> public interface SaverDelegate extends ConfigurationNodeVisitor<Void> {
>     /**
>      * @param encoder provided by caller
>      */
>     void setXMLEncoder(XMLEncoder encoder);
>     void setParentDelegate(SaverDelegate parentDelegate);
>     SaverDelegate getParentDelegate();
> }
> {code}
> Extension can be contributed via {{ProjectModule.contributeExtensions(Binder)}} method.



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