Browse Source

Add controller type to ApplicationApiDescriptionModel

pull/96/head
Halil İbrahim Kalkan 9 years ago
parent
commit
d5e69a623f
  1. 10
      src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AspNetCoreApiDescriptionModelProvider.cs
  2. 8
      src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ControllerApiDescriptionModel.cs
  3. 4
      src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ModuleApiDescriptionModel.cs

10
src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AspNetCoreApiDescriptionModelProvider.cs

@ -54,8 +54,11 @@ namespace Volo.Abp.AspNetCore.Mvc
private void AddApiDescriptionToModel(ApiDescription apiDescription, ApplicationApiDescriptionModel model) private void AddApiDescriptionToModel(ApiDescription apiDescription, ApplicationApiDescriptionModel model)
{ {
var moduleModel = model.GetOrAddModule(GetModuleName(apiDescription)); var controllerType = apiDescription.ActionDescriptor.AsControllerActionDescriptor().ControllerTypeInfo.AsType();
var controllerModel = moduleModel.GetOrAddController(GetControllerName(apiDescription));
var moduleModel = model.GetOrAddModule(GetModuleName(controllerType));
var controllerModel = moduleModel.GetOrAddController(GetControllerName(apiDescription), controllerType);
var method = apiDescription.ActionDescriptor.GetMethodInfo(); var method = apiDescription.ActionDescriptor.GetMethodInfo();
@ -153,9 +156,8 @@ namespace Volo.Abp.AspNetCore.Mvc
return modelNameProvider.Name; return modelNameProvider.Name;
} }
private string GetModuleName(ApiDescription apiDescription) private string GetModuleName(Type controllerType)
{ {
var controllerType = apiDescription.ActionDescriptor.AsControllerActionDescriptor().ControllerTypeInfo.AsType();
if (controllerType == null) if (controllerType == null)
{ {
return AbpControllerAssemblySetting.DefaultServiceModuleName; return AbpControllerAssemblySetting.DefaultServiceModuleName;

8
src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ControllerApiDescriptionModel.cs

@ -9,6 +9,10 @@ namespace Volo.Abp.Http.Modeling
{ {
public string Name { get; } public string Name { get; }
public Type Type { get; }
public string TypeAsString { get; }
public IDictionary<string, ActionApiDescriptionModel> Actions { get; } public IDictionary<string, ActionApiDescriptionModel> Actions { get; }
private ControllerApiDescriptionModel() private ControllerApiDescriptionModel()
@ -16,9 +20,11 @@ namespace Volo.Abp.Http.Modeling
} }
public ControllerApiDescriptionModel(string name) public ControllerApiDescriptionModel(string name, Type type)
{ {
Name = name; Name = name;
Type = type;
TypeAsString = type.FullName;
Actions = new Dictionary<string, ActionApiDescriptionModel>(); Actions = new Dictionary<string, ActionApiDescriptionModel>();
} }

4
src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ModuleApiDescriptionModel.cs

@ -33,9 +33,9 @@ namespace Volo.Abp.Http.Modeling
return Controllers[controller.Name] = controller; return Controllers[controller.Name] = controller;
} }
public ControllerApiDescriptionModel GetOrAddController(string name) public ControllerApiDescriptionModel GetOrAddController(string name, Type type)
{ {
return Controllers.GetOrAdd(name, () => new ControllerApiDescriptionModel(name)); return Controllers.GetOrAdd(name, () => new ControllerApiDescriptionModel(name, type));
} }
public ModuleApiDescriptionModel CreateSubModel(string[] controllers, string[] actions) public ModuleApiDescriptionModel CreateSubModel(string[] controllers, string[] actions)

Loading…
Cancel
Save