Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,13 @@ public sealed class JavadocInfo {

public XElement[] ExtraRemarks { get; set; }

public XElement[] Copyright { get; set; }

public XmldocStyle XmldocStyle { get; set; }

string MemberDescription;

public static JavadocInfo CreateInfo (XElement element, XmldocStyle style)
public static JavadocInfo CreateInfo (XElement element, XmldocStyle style, bool appendCopyrightExtra = true)
{
if (element == null) {
return null;
Expand All @@ -39,13 +41,16 @@ public static JavadocInfo CreateInfo (XElement element, XmldocStyle style)
string declaringMemberName = desc.DeclaringMemberName;
var declaringMemberJniSignature = desc.DeclaringMemberJniSignature;

XElement[] extra = GetExtra (element, style, declaringJniType, declaringMemberName, declaringMemberJniSignature);
var extras = GetExtra (element, style, declaringJniType, declaringMemberName, declaringMemberJniSignature, appendCopyrightExtra);
XElement[] extra = extras.Extras;
XElement[] copyright = extras.Copyright;

if (string.IsNullOrEmpty (javadoc) && extra == null)
return null;

var info = new JavadocInfo () {
ExtraRemarks = extra,
Copyright = copyright,
Javadoc = javadoc,
MemberDescription = declaringMemberName == null
? declaringJniType
Expand Down Expand Up @@ -78,10 +83,10 @@ public static JavadocInfo CreateInfo (XElement element, XmldocStyle style)
return (declaringJniType, declaringMemberName, declaringMemberJniSignature);
}

static XElement[] GetExtra (XElement element, XmldocStyle style, string declaringJniType, string declaringMemberName, string declaringMemberJniSignature)
static (XElement[] Extras, XElement[] Copyright) GetExtra (XElement element, XmldocStyle style, string declaringJniType, string declaringMemberName, string declaringMemberJniSignature, bool appendCopyrightExtra)
{
if (!style.HasFlag (XmldocStyle.IntelliSenseAndExtraRemarks))
return null;
return (null, null);

XElement javadocMetadata = null;
while (element != null) {
Expand All @@ -93,6 +98,7 @@ static XElement[] GetExtra (XElement element, XmldocStyle style, string declarin
}

List<XElement> extra = null;
IEnumerable<XElement> copyright = null;
if (javadocMetadata != null) {
var link = javadocMetadata.Element ("link");
var urlPrefix = (string) link.Attribute ("prefix");
Expand All @@ -105,9 +111,12 @@ static XElement[] GetExtra (XElement element, XmldocStyle style, string declarin
}
extra = new List<XElement> ();
extra.Add (docLink);
extra.AddRange (javadocMetadata.Element ("copyright").Elements ());
copyright = javadocMetadata.Element ("copyright").Elements ();
if (appendCopyrightExtra) {
extra.AddRange (copyright);
}
}
return extra?.ToArray ();
return (extra?.ToArray (), copyright?.ToArray ());
}

static ApiLinkStyle ParseApiLinkStyle (string style)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,11 @@ static void AddJavadoc (GenBase type, Dictionary<string, XElement> typeJavadocs,
foreach (var property in type.Properties) {
if (property.Getter != null && property.Getter.JavadocInfo == null) {
var getterJavadoc = GetMemberJavadoc (typeJavadoc, "method", property.Getter.JavaName, property.Getter.JniSignature);
property.Getter.JavadocInfo = JavadocInfo.CreateInfo (getterJavadoc?.Parent, style);
property.Getter.JavadocInfo = JavadocInfo.CreateInfo (getterJavadoc?.Parent, style, appendCopyrightExtra: false);
}
if (property.Setter != null && property.Setter.JavadocInfo == null) {
var setterJavadoc = GetMemberJavadoc (typeJavadoc, "method", property.Setter.JavaName, property.Setter.JniSignature);
property.Setter.JavadocInfo = JavadocInfo.CreateInfo (setterJavadoc?.Parent, style);
property.Setter.JavadocInfo = JavadocInfo.CreateInfo (setterJavadoc?.Parent, style, appendCopyrightExtra: false);
}
}

Expand Down
16 changes: 13 additions & 3 deletions tools/generator/SourceWriters/BoundProperty.cs
Original file line number Diff line number Diff line change
Expand Up @@ -158,18 +158,28 @@ void AddJavadocs (Property property)
return;

var memberDocs = new XElement ("member");
XElement[] copyrightExtra = null;

if (property.Getter?.JavadocInfo != null) {
memberDocs.Add (property.Getter.JavadocInfo.ParseJavadoc ());
copyrightExtra = property.Getter.JavadocInfo.Copyright;
}

if (property.Setter?.JavadocInfo != null) {
var setterDocs = new XElement ("member", property.Setter.JavadocInfo.ParseJavadoc ());
if (copyrightExtra == null) {
copyrightExtra = property.Setter.JavadocInfo.Copyright;
}

MergeSummary (memberDocs, setterDocs);
MergeRemarks (memberDocs, setterDocs);

memberDocs.Add (setterDocs.DescendantNodes ());
memberDocs.Add (setterDocs.Nodes ());
}

if (copyrightExtra != null) {
var remarks = memberDocs.Element ("remarks");
remarks?.Add (copyrightExtra);
}

JavadocInfo.AddComments (Comments, memberDocs.Elements ());
Expand All @@ -187,7 +197,7 @@ static void MergeSummary (XElement mergeInto, XElement mergeFrom)
else if (toContent != null && fromContent != null) {
fromContent.Remove ();
toContent.Add (" -or- ");
toContent.Add (fromContent.DescendantNodes ());
toContent.Add (fromContent.Nodes ());
}
}

Expand All @@ -204,7 +214,7 @@ static void MergeRemarks (XElement mergeInto, XElement mergeFrom)
fromContent.Remove ();
toContent.AddFirst (new XElement ("para", "Property getter documentation:"));
toContent.Add (new XElement ("para", "Property setter documentation:"));
toContent.Add (fromContent.DescendantNodes ());
toContent.Add (fromContent.Nodes ());
}
}
}
Expand Down