Skip to content

Commit

Permalink
Merge: nitweb: light responses
Browse files Browse the repository at this point in the history
Nitweb was returning insane amount of data (~2mo of json by request). The new version (http://nitweb.moz-code.org/) is a little more perf.

Pull-Request: #2303
Reviewed-by: Jean Privat <[email protected]>
  • Loading branch information
privat committed Sep 1, 2016
2 parents 39f109b + 73d0dc1 commit 262a277
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 80 deletions.
2 changes: 1 addition & 1 deletion share/nitweb/views/classdef.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<ul class='nav nav-tabs' role='tablist'>
<ul class='nav nav-tabs' ng-init='entityCtrl.loadEntityLinearization()'>
<li role='presentation' class='warning'>
<a ng-href='{{mentity.mclass.web_url}}'>
<span class='glyphicon glyphicon-chevron-left'/> Go to class
Expand Down
2 changes: 1 addition & 1 deletion share/nitweb/views/propdef.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<ul class='nav nav-tabs'>
<ul class='nav nav-tabs' ng-init='entityCtrl.loadEntityLinearization()'>
<li role='presentation' class='warning'>
<a href='{{mentity.mproperty.web_url}}'>
<span class='glyphicon glyphicon-chevron-left'/> Go to property
Expand Down
70 changes: 58 additions & 12 deletions src/model/model_json.nit
Original file line number Diff line number Diff line change
Expand Up @@ -51,16 +51,15 @@ redef class MEntity

# Return `self` as a JsonObject.
#
# By default, every reference to another MEntity is replaced by a pointer
# to the MEntity::json_id.
# By default, every reference to another MEntity is skipped.
# Use full_json for a full representation.
fun json: JsonObject do
var obj = new JsonObject
obj["name"] = name
obj["class_name"] = class_name
obj["full_name"] = full_name
obj["mdoc"] = mdoc_or_fallback
obj["visibility"] = visibility
obj["location"] = location
var modifiers = new JsonArray
for modifier in collect_modifiers do
modifiers.add modifier
Expand All @@ -70,6 +69,19 @@ redef class MEntity
end

redef fun to_json do return json.to_json

# Return `self` as a JsonObject with references.
#
# By default, every reference to another MEntity is replaced by a pointer
# to the MEntity::json_id.
fun full_json: JsonObject do
var obj = json
obj["location"] = location
return obj
end

# Return `full_json` as a json string.
fun to_full_json: String do return full_json.to_json
end

redef class MDoc
Expand Down Expand Up @@ -114,7 +126,7 @@ end

redef class MPackage

redef fun json do
redef fun full_json do
var obj = super
if ini != null then
obj["ini"] = new JsonObject.from(ini.as(not null).to_map)
Expand All @@ -129,6 +141,11 @@ redef class MGroup
redef fun json do
var obj = super
obj["is_root"] = is_root
return obj
end

redef fun full_json do
var obj = super
obj["mpackage"] = to_mentity_ref(mpackage)
obj["default_mmodule"] = to_mentity_ref(default_mmodule)
obj["parent"] = to_mentity_ref(parent)
Expand All @@ -139,26 +156,36 @@ redef class MGroup
end

redef class MModule
redef fun json do
redef fun full_json do
var obj = super
obj["mpackage"] = to_mentity_ref(mpackage)
obj["mgroup"] = to_mentity_ref(mgroup)
obj["intro_mclasses"] = to_mentity_refs(intro_mclasses)
obj["mclassdefs"] = to_mentity_refs(mclassdefs)
obj["intro_mclassdefs"] = to_mentity_refs(collect_intro_mclassdefs(private_view))
obj["redef_mclassdefs"] = to_mentity_refs(collect_redef_mclassdefs(private_view))
obj["imports"] = to_mentity_refs(in_importation.direct_greaters)
return obj
end
end

redef class MClass
redef fun json do
var obj = super
var arr = new JsonArray
for mparameter in mparameters do arr.add mparameter
obj["mparameters"] = arr
obj["mparameters"] = new JsonArray.from(mparameters)
return obj
end

redef fun full_json do
var obj = super
obj["intro"] = to_mentity_ref(intro)
obj["intro_mmodule"] = to_mentity_ref(intro_mmodule)
obj["mpackage"] = to_mentity_ref(intro_mmodule.mpackage)
obj["mclassdefs"] = to_mentity_refs(mclassdefs)
obj["all_mproperties"] = to_mentity_refs(collect_accessible_mproperties(private_view))
obj["intro_mproperties"] = to_mentity_refs(collect_intro_mproperties(private_view))
obj["redef_mproperties"] = to_mentity_refs(collect_redef_mproperties(private_view))
obj["parents"] = to_mentity_refs(collect_parents(private_view))
return obj
end
end
Expand All @@ -167,23 +194,32 @@ redef class MClassDef
redef fun json do
var obj = super
obj["is_intro"] = is_intro
var arr = new JsonArray
for mparameter in mclass.mparameters do arr.add mparameter
obj["mparameters"] = arr
obj["mparameters"] = new JsonArray.from(mclass.mparameters)
return obj
end

redef fun full_json do
var obj = super
obj["mmodule"] = to_mentity_ref(mmodule)
obj["mclass"] = to_mentity_ref(mclass)
obj["mpropdefs"] = to_mentity_refs(mpropdefs)
obj["intro_mproperties"] = to_mentity_refs(intro_mproperties)
obj["intro"] = to_mentity_ref(mclass.intro)
obj["mpackage"] = to_mentity_ref(mmodule.mpackage)
obj["intro_mpropdefs"] = to_mentity_refs(collect_intro_mpropdefs(private_view))
obj["redef_mpropdefs"] = to_mentity_refs(collect_redef_mpropdefs(private_view))
return obj
end
end

redef class MProperty
redef fun json do
redef fun full_json do
var obj = super
obj["intro"] = to_mentity_ref(intro)
obj["intro_mclassdef"] = to_mentity_ref(intro_mclassdef)
obj["mpropdefs"] = to_mentity_refs(mpropdefs)
obj["intro_mclass"] = to_mentity_ref(intro_mclassdef.mclass)
obj["mpackage"] = to_mentity_ref(intro_mclassdef.mmodule.mpackage)
return obj
end
end
Expand Down Expand Up @@ -218,8 +254,18 @@ redef class MPropDef
redef fun json do
var obj = super
obj["is_intro"] = is_intro
return obj
end

redef fun full_json do
var obj = super
obj["mclassdef"] = to_mentity_ref(mclassdef)
obj["mproperty"] = to_mentity_ref(mproperty)
obj["intro"] = to_mentity_ref(mproperty.intro)
obj["intro_mclassdef"] = to_mentity_ref(mproperty.intro.mclassdef)
obj["mmodule"] = to_mentity_ref(mclassdef.mmodule)
obj["mgroup"] = to_mentity_ref(mclassdef.mmodule.mgroup)
obj["mpackage"] = to_mentity_ref(mclassdef.mmodule.mpackage)
return obj
end
end
Expand Down
4 changes: 3 additions & 1 deletion src/web/api_model.nit
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,9 @@ class APIEntityLinearization
res.api_error(404, "No linearization for mentity `{mentity.full_name}`")
return
end
res.json new JsonArray.from(lin)
var mentities = new JsonArray
for e in lin do mentities.add e.full_json
res.json mentities
end
end

Expand Down
73 changes: 8 additions & 65 deletions src/web/web_base.nit
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ redef class MEntity
end

# Get the full json repesentation of `self` with MEntityRefs resolved.
fun api_json(handler: APIHandler): JsonObject do return json
fun api_json(handler: APIHandler): JsonObject do return full_json
end

redef class MEntityRef
Expand All @@ -154,7 +154,6 @@ redef class MEntityRef
obj["name"] = mentity.name
obj["mdoc"] = mentity.mdoc_or_fallback
obj["visibility"] = mentity.visibility
obj["location"] = mentity.location
var modifiers = new JsonArray
for modifier in mentity.collect_modifiers do
modifiers.add modifier
Expand All @@ -172,77 +171,21 @@ redef class MEntityRef
end
return obj
end
end

redef class MDoc

# Add doc down processing
redef fun json do
var obj = super
obj["synopsis"] = synopsis
obj["documentation"] = documentation
obj["comment"] = comment
obj["html_synopsis"] = html_synopsis.write_to_string
obj["html_documentation"] = html_documentation.write_to_string
obj["html_comment"] = html_comment.write_to_string
return obj
end
end

redef class MModule
redef fun api_json(handler) do
var obj = super
obj["intro_mclassdefs"] = to_mentity_refs(collect_intro_mclassdefs(private_view))
obj["redef_mclassdefs"] = to_mentity_refs(collect_redef_mclassdefs(private_view))
obj["imports"] = to_mentity_refs(in_importation.direct_greaters)
return obj
end
end

redef class MClass
redef fun api_json(handler) do
var obj = super
obj["all_mproperties"] = to_mentity_refs(collect_accessible_mproperties(private_view))
obj["intro_mproperties"] = to_mentity_refs(collect_intro_mproperties(private_view))
obj["redef_mproperties"] = to_mentity_refs(collect_redef_mproperties(private_view))
obj["parents"] = to_mentity_refs(collect_parents(private_view))
return obj
end
end

redef class MClassDef
redef fun json do
var obj = super
obj["intro"] = to_mentity_ref(mclass.intro)
obj["mpackage"] = to_mentity_ref(mmodule.mpackage)
return obj
end

redef fun api_json(handler) do
redef fun full_json do
var obj = super
obj["intro_mpropdefs"] = to_mentity_refs(collect_intro_mpropdefs(private_view))
obj["redef_mpropdefs"] = to_mentity_refs(collect_redef_mpropdefs(private_view))
obj["location"] = mentity.location
return obj
end
end

redef class MProperty
redef fun json do
var obj = super
obj["intro_mclass"] = to_mentity_ref(intro_mclassdef.mclass)
obj["mpackage"] = to_mentity_ref(intro_mclassdef.mmodule.mpackage)
return obj
end
end
redef class MDoc

redef class MPropDef
# Add doc down processing
redef fun json do
var obj = super
obj["intro"] = to_mentity_ref(mproperty.intro)
obj["intro_mclassdef"] = to_mentity_ref(mproperty.intro.mclassdef)
obj["mmodule"] = to_mentity_ref(mclassdef.mmodule)
obj["mgroup"] = to_mentity_ref(mclassdef.mmodule.mgroup)
obj["mpackage"] = to_mentity_ref(mclassdef.mmodule.mpackage)
var obj = new JsonObject
obj["html_synopsis"] = html_synopsis.write_to_string
obj["html_documentation"] = html_documentation.write_to_string
return obj
end
end
Expand Down

0 comments on commit 262a277

Please sign in to comment.