Skip to content

Support nested annotations #12

@G-Ork

Description

@G-Ork

Problem

Currently the value node for annotations contains a simple string representation of the values. This makes it hard to parse where annotations are nested. It would be nice to handle annotations recursive to be able to extract the desired information more easy.

Example usage of nested annotations

@Entity
@Table(name="VCUST")
@DiscriminatorValue("VCUST")
@PrimaryKeyJoinColumns({
    @PrimaryKeyJoinColumn(name="CUST_ID",referencedColumnName="ID"),
    @PrimaryKeyJoinColumn(name="CUST_TYPE",referencedColumnName="TYPE")
})
public class ValuedCustomer extends Customer { 
    // body
}

Expected Output

In respect to XSD i would not change the value type to mixed content and prefer a more typed way with a new node.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
    <package name="com.github.markusbernhardt.xmldoclet.simpledata">
        <class name="ClassJPA" qualified="com.github.markusbernhardt.xmldoclet.simpledata.ClassJPA" scope="public" abstract="false" error="false" exception="false" externalizable="false" included="true" serializable="false">
            <class qualified="java.lang.Object"/>
            <constructor name="ClassJPA" signature="()" qualified="com.github.markusbernhardt.xmldoclet.simpledata.ClassJPA" scope="public" final="false" included="true" native="false" synchronized="false" static="false" varArgs="false"/>
            <annotation name="Entity" qualified="javax.persistence.Entity"/>
            <annotation name="Table" qualified="javax.persistence.Table">
                <argument name="name" primitive="false" array="false">
                    <type qualified="java.lang.String"/>
                    <value>VCUST</value>
                </argument>
            </annotation>
            <annotation name="DiscriminatorValue" qualified="javax.persistence.DiscriminatorValue">
                <argument name="value" primitive="false" array="false">
                    <type qualified="java.lang.String"/>
                    <value>VCUST</value>
                </argument>
            </annotation>
            <annotation name="PrimaryKeyJoinColumns" qualified="javax.persistence.PrimaryKeyJoinColumns">
                <argument name="value" primitive="false" array="true">
                    <type qualified="javax.persistence.PrimaryKeyJoinColumn" dimension="[]"/>
                    <annotation name="PrimaryKeyJoinColumn" qualified="javax.persistence.PrimaryKeyJoinColumn">
                        <argument name="name" primitive="false" array="false">
                            <type qualified="java.lang.String"/>
                            <value>CUST_ID</value>
                        </argument>
                        <argument name="referencedColumnName" primitive="false" array="false">
                            <type qualified="java.lang.String"/>
                            <value>ID</value>
                        </argument>
                    </annotation>
                    <annotation name="PrimaryKeyJoinColumn" qualified="javax.persistence.PrimaryKeyJoinColumn">
                        <argument name="name" primitive="false" array="false">
                            <type qualified="java.lang.String"/>
                            <value>CUST_TYPE</value>
                        </argument>
                        <argument name="referencedColumnName" primitive="false" array="false">
                            <type qualified="java.lang.String"/>
                            <value>TYPE</value>
                        </argument>
                    </annotation>
                </argument>
            </annotation>
        </class>
    </package>
</root>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions