return DefDescriptorImpl.getInstance("test:fakeApplication", ApplicationDef.class);
}
@Override
public ComponentConfig provide() throws QuickFixException {
ComponentConfig config = new ComponentConfig();
BaseComponent<?, ?> component = Aura.getContextService().getCurrentContext().getCurrentComponent();
String whatToDo = (String) component.getAttributes().getExpression("whatToDo");
if (whatToDo.equalsIgnoreCase("label")) {
Map<String, Object> attrs = Maps.newHashMap();
attrs.put("name", "Null Returned");
config.setAttributes(attrs);
} else if (whatToDo.equalsIgnoreCase("replace")) {
config.setDescriptor(DefDescriptorImpl.getInstance("test:test_Provider_Concrete_Sub", ComponentDef.class));
} else if (whatToDo.equalsIgnoreCase("replaceBad")) {
@SuppressWarnings("unchecked")
DefDescriptor<ComponentDef> foo = (DefDescriptor<ComponentDef>) getMagicDescriptor();
config.setDescriptor(foo);
} else if (whatToDo.equalsIgnoreCase("replaceNotFound")) {
config.setDescriptor(DefDescriptorImpl.getInstance("test:test_Provider_Concrete_Sub_NotHere",
ComponentDef.class));
} else if (whatToDo.equalsIgnoreCase("provideTestModelParentCmp")) {
config.setDescriptor(DefDescriptorImpl.getInstance("auratest:test_Model_Parent",
ComponentDef.class));
} else if (whatToDo.equalsIgnoreCase("mockRecordLayout")) {
//this is the mimic of recordLayoutProvider.
//being used by DynamicnamespaceUITest and PreloadNameSpaceHttpTest.testDynamicNamespace
String hash = "HASH";
String hashName = String.format("layout://%s_%s_%s_%s_%s:c", "rl",
"001", "VIEW", "ACCOUNT", hash);
DefDescriptor<ComponentDef> hashedDescriptor = DefDescriptorImpl.getInstance(hashName,
ComponentDef.class);
Builder builder = new ComponentDefImpl.Builder();
builder.setDescriptor(hashedDescriptor);
//set up attribute definitions. we don't need "whatToDo" any more, but the build still require it
Map<DefDescriptor<AttributeDef>, AttributeDef> attributeDefs = new HashMap<>();
DefDescriptor<TypeDef> type = DefDescriptorImpl.getInstance("String", TypeDef.class);
attributeDefs.put(DefDescriptorImpl.getInstance("whatToDo", AttributeDef.class), new AttributeDefImpl(
DefDescriptorImpl.getInstance("whatToDo", AttributeDef.class), null, type, null, true,
AttributeDef.SerializeToType.BOTH, null, null));
builder.attributeDefs = attributeDefs;
ComponentDef cmpDef = builder.build();
AuraContext context = Aura.getContextService().getCurrentContext();
//add dynamic namespace to MasterDefRegistry so later we can getDef from it during the injectComponent();
MasterDefRegistry mdr = context.getDefRegistry();
mdr.addLocalDef(cmpDef);
config.setDescriptor(cmpDef.getDescriptor());
}
return config;
}