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)