package org.triiskelion.tinyspring.apidoc.model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.triiskelion.tinyspring.apidoc.annotation.ApiRepository;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: Sebastian MA
* Date: August 31, 2014
* Time: 16:31
*/
public class ApiRepositoryDoc {
String name;
String description;
String[] path;
private List<ApiEntryDoc> entries = new ArrayList<>();
private int entryCount;
public static ApiRepositoryDoc create(Class<?> controller) {
ApiRepositoryDoc repositoryDoc = new ApiRepositoryDoc();
RequestMapping mvcAnnotation = controller.getAnnotation(RequestMapping.class);
ApiRepository myAnnotation = controller.getAnnotation(ApiRepository.class);
repositoryDoc.setName(myAnnotation.name());
repositoryDoc.setDescription(myAnnotation.description());
repositoryDoc.setPath(mvcAnnotation.value());
Method[] methods = controller.getMethods();
for(Method method : methods) {
ApiEntryDoc entryDoc = ApiEntryDoc.create(method);
if(entryDoc != null) {
repositoryDoc.getEntries().add(entryDoc);
}
}
repositoryDoc.entryCount = repositoryDoc.entries.size();
return repositoryDoc;
}
public int getEntryCount() {
return entryCount;
}
public void setEntryCount(int entryCount) {
this.entryCount = entryCount;
}
public List<ApiEntryDoc> getEntries() {
return entries;
}
public void setEntries(List<ApiEntryDoc> entries) {
this.entries = entries;
}
public String[] getPath() {
return path;
}
public void setPath(String[] path) {
this.path = path;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}