/** * Get the relative URL for a given BaseComponentDef descriptor. * * @param desc the DefDescriptor of a BaseComponentDef * @return the relative URL for the descriptor */ protected String getUrl(DefDescriptor<? extends BaseComponentDef> desc) { return String.format( "/%s/%s.%s", desc.getNamespace(), desc.getName(), DefType.APPLICATION.equals(desc.getDefType()) ? "app" : "cmp"); }
private AttributeModel(AttributeDef def) throws QuickFixException { this.name = def.getName(); this.description = def.getDescription(); this.type = def.getTypeDef().getName().toLowerCase(); this.required = def.isRequired(); if (def.getDefaultValue() != null) { this.defaultValue = def.getDefaultValue().getValue().toString(); } else { this.defaultValue = null; } DefDescriptor<?> parentDesc = def.getParentDescriptor(); if (parentDesc == null || parentDesc.equals(ComponentDefModel.this.descriptor)) { this.parentName = null; this.parentDefType = null; } else { this.parentName = parentDesc.getNamespace() + ":" + parentDesc.getName(); this.parentDefType = parentDesc.getDefType().name().toLowerCase(); } }
public ComponentDefModel() throws QuickFixException { AuraContext context = Aura.getContextService().getCurrentContext(); BaseComponent<?, ?> component = context.getCurrentComponent(); String desc = (String) component.getAttributes().getValue("descriptor"); DefType defType = DefType.valueOf(((String) component.getAttributes().getValue("defType")).toUpperCase()); DefinitionService definitionService = Aura.getDefinitionService(); descriptor = definitionService.getDefDescriptor(desc, defType.getPrimaryInterface()); definition = descriptor.getDef(); ReferenceTreeModel.assertAccess(definition); String type = null; if (definition instanceof RootDefinition) { RootDefinition rootDef = (RootDefinition) definition; for (AttributeDef attribute : rootDef.getAttributeDefs().values()) { if (ReferenceTreeModel.hasAccess(attribute)) { attributes.add(new AttributeModel(attribute)); } } DocumentationDef docDef = rootDef.getDocumentationDef(); doc = docDef != null ? new DocumentationDefModel(docDef) : null; if (definition instanceof BaseComponentDef) { BaseComponentDef cmpDef = (BaseComponentDef) definition; for (RegisterEventDef reg : cmpDef.getRegisterEventDefs().values()) { if (ReferenceTreeModel.hasAccess(reg)) { events.add(new AttributeModel(reg)); } } for (EventHandlerDef handler : cmpDef.getHandlerDefs()) { handledEvents.add(new AttributeModel(handler)); } for (DefDescriptor<InterfaceDef> intf : cmpDef.getInterfaces()) { if (ReferenceTreeModel.hasAccess(intf.getDef())) { interfaces.add(intf.getNamespace() + ":" + intf.getName()); } } DefDescriptor<?> superDesc = cmpDef.getExtendsDescriptor(); if (superDesc != null) { theSuper = superDesc.getNamespace() + ":" + superDesc.getName(); } else { theSuper = null; } isAbstract = cmpDef.isAbstract(); isExtensible = cmpDef.isExtensible(); } else if (definition instanceof EventDef) { EventDef eventDef = (EventDef) definition; DefDescriptor<?> superDesc = eventDef.getExtendsDescriptor(); if (superDesc != null) { theSuper = superDesc.getNamespace() + ":" + superDesc.getName(); } else { theSuper = null; } type = eventDef.getEventType().name(); isExtensible = true; isAbstract = false; } else { theSuper = null; isExtensible = true; isAbstract = false; } support = rootDef.getSupport().name(); if (definition instanceof RootDefinition) { List<DefDescriptor<?>> deps = ((RootDefinition) definition).getBundle(); for (DefDescriptor<?> dep : deps) { // we already surface the documentation--users don't need to see the source for it. if (dep.getDefType() != DefType.DOCUMENTATION) { Definition def = dep.getDef(); if (ReferenceTreeModel.hasAccess(def)) { defs.add(new DefModel(dep)); } } } } } else { support = null; theSuper = null; isExtensible = false; isAbstract = false; doc = null; } this.type = type; }