public void testComparison() throws Exception {
    DefDescriptor<?> fakeComponent =
        DefDescriptorImpl.getInstance("aura:fakeComponent", ComponentDef.class);
    DefDescriptor<?> fakeComponent2 =
        DefDescriptorImpl.getInstance("Aura:FakeComponent", ComponentDef.class);
    DefDescriptor<?> fooComponent = DefDescriptorImpl.getInstance("aura:foo", ComponentDef.class);
    DefDescriptor<?> fakeComponentLayout =
        DefDescriptorImpl.getInstance("aura:fakeComponent", LayoutsDef.class);

    assertTrue(fakeComponent.compareTo(fakeComponent2) == 0);
    assertTrue(fooComponent.compareTo(fakeComponent) > 0);
    assertTrue(fakeComponent.compareTo(fooComponent) < 0);
    assertTrue(fakeComponent.compareTo(fakeComponentLayout) < 0);
    assertTrue(fakeComponentLayout.compareTo(fakeComponent) > 0);
  }
 public void testApexDescriptors() {
   DefDescriptor<ControllerDef> descriptor =
       DefDescriptorImpl.getInstance("apex://foo.Bar", ControllerDef.class);
   assertEquals("apex", descriptor.getPrefix());
   assertEquals("Bar", descriptor.getName());
   assertEquals("foo", descriptor.getNamespace());
   assertEquals("apex://foo.Bar", descriptor.getQualifiedName());
 }
 public void testControllerDescriptorStringLocation() {
   DefDescriptor<ControllerDef> descriptor =
       DefDescriptorImpl.getInstance("java://foo.Bar", ControllerDef.class);
   assertEquals("java", descriptor.getPrefix());
   assertEquals("Bar", descriptor.getName());
   assertEquals("foo", descriptor.getNamespace());
   assertEquals("java://foo.Bar", descriptor.getQualifiedName());
 }
 public void testBadNameChars() {
   try {
     DefDescriptorImpl.getInstance(
         "markup://foo.1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ+/", ComponentDef.class);
     fail("did not fail on invalid characters");
   } catch (AuraRuntimeException expected) {
     // ignore, I suppose we could check the string, but we should
     // probably change the exception as well.
   }
 }
  @ThreadHostileTest("cache dependent")
  public void testGetInstance() throws Exception {
    // test getInstance(tag, defClass)
    DefDescriptor<?> testDescriptor =
        DefDescriptorImpl.getInstance("aura:text", ComponentDef.class);

    // getInstance should never return null
    assertNotNull(testDescriptor);

    // even if the component doesn't exist
    assertNotNull(DefDescriptorImpl.getInstance("fake:component", ComponentDef.class));

    // subsequent calls to getInstance should return objects that are the same.
    assertSame(testDescriptor, (DefDescriptorImpl.getInstance("aura:text", ComponentDef.class)));

    // test getInstance(null, defClass)
    DefDescriptor<ComponentDef> testDescriptorNullTag = null;

    try {
      testDescriptorNullTag = DefDescriptorImpl.getInstance(null, ComponentDef.class);
      fail("Should have thrown AuraException for null tag in ComponentDefDescriptor");
    } catch (AuraRuntimeException expected) {
      assertEquals("descriptor is null", expected.getMessage());
    }

    // test getInstance(name, null)
    try {
      testDescriptorNullTag = DefDescriptorImpl.getInstance("aura:text", null);
      fail("Should have thrown AuraException for null defClass in ComponentDefDescriptor");
    } catch (AuraRuntimeException expected) {
      assertEquals("descriptor is null", expected.getMessage());
    }

    assertNull(testDescriptorNullTag);

    // test getting type instances.
    // Why did qualified name EVER match?? --fka3

    // It is unncetain why this fails. Here is a bug for investigation: W-2051904.
    // testDescriptor = DefDescriptorImpl.getInstance("Aura.Component", TypeDef.class);
    // assertEquals(testDescriptor, (DefDescriptorImpl.getInstance("aura://Aura.Component",
    // TypeDef.class)));

    testDescriptor = DefDescriptorImpl.getInstance("aura://Aura.Component[]", TypeDef.class);
    assertEquals(
        testDescriptor, (DefDescriptorImpl.getInstance("Aura.Component[]", TypeDef.class)));

    testDescriptor = DefDescriptorImpl.getInstance("aura://List<String>", TypeDef.class);
    assertEquals(testDescriptor, (DefDescriptorImpl.getInstance("List<String>", TypeDef.class)));

    testDescriptor = DefDescriptorImpl.getInstance("aura://List", TypeDef.class);
    assertEquals(testDescriptor, (DefDescriptorImpl.getInstance("List", TypeDef.class)));

    // no type validation for map sub-types
    testDescriptor = DefDescriptorImpl.getInstance("Map<Aura.Component>", TypeDef.class);
    assertEquals(testDescriptor, (DefDescriptorImpl.getInstance("Map<String>", TypeDef.class)));
  }
 public void testGetDefType() throws Exception {
   DefDescriptor<ComponentDef> testDescriptor =
       DefDescriptorImpl.getInstance("aura:text", ComponentDef.class);
   assertEquals(testDescriptor.getDefType(), DefType.COMPONENT);
 }
 public void testSerialize2() throws Exception {
   DefDescriptor<ControllerDef> descriptor =
       DefDescriptorImpl.getInstance("java://foo.Bar", ControllerDef.class);
   serializeAndGoldFile(descriptor);
 }
  public void testEquals() throws Exception {
    testEquals(
        DefDescriptorImpl.getInstance("aura:fakeComponent", ComponentDef.class),
        vendor.makeComponentDefDescriptor("aura:fakeComponent"),
        0);
    testEquals(
        DefDescriptorImpl.getInstance("aurA:Fakecomponent", ComponentDef.class),
        vendor.makeComponentDefDescriptor("aura:fakeComponent"),
        0);
    testEquals(
        DefDescriptorImpl.getInstance("fake:component", ComponentDef.class),
        vendor.makeComponentDefDescriptor("fake:component"),
        0);
    testEquals(
        DefDescriptorImpl.getInstance("aura:text", ComponentDef.class),
        vendor.makeComponentDefDescriptor("aura:text"),
        0);
    testEquals(
        DefDescriptorImpl.getInstance("some:component", ComponentDef.class),
        DefDescriptorImpl.getInstance("markup://some:component", ComponentDef.class),
        0);
    /* this class of descriptors does not default a prefix, which makes sense in some cases like for renderer, provider, etc.
    testEquals(DefDescriptorImpl.getInstance("js://some.component", HelperDef.class),
    		DefDescriptorImpl.getInstance("some.component", HelperDef.class), 0);
     */

    testEquals(
        DefDescriptorImpl.getInstance("aura:fakeComponent", ComponentDef.class),
        vendor.makeComponentDefDescriptor("fake:component"),
        -1);
    testEquals(
        DefDescriptorImpl.getInstance("aura:fakeComponent", ComponentDef.class),
        vendor.makeComponentDefDescriptor("aura:text"),
        -1);
    testEquals(
        DefDescriptorImpl.getInstance("fake:component", ComponentDef.class),
        vendor.makeComponentDefDescriptor("aura:fakeComponent"),
        1);
    testEquals(
        DefDescriptorImpl.getInstance("fake:component", ComponentDef.class),
        vendor.makeComponentDefDescriptor("aura:text"),
        1);
    testEquals(
        DefDescriptorImpl.getInstance("aura:text", ComponentDef.class),
        vendor.makeComponentDefDescriptor("fake:component"),
        -1);
    testEquals(
        DefDescriptorImpl.getInstance("aura:text", ComponentDef.class),
        vendor.makeComponentDefDescriptor("aura:fakeComponent"),
        1);
    testEquals(
        DefDescriptorImpl.getInstance("aura:text", ApplicationDef.class),
        vendor.makeComponentDefDescriptor("aura:text"),
        -1);
  }
예제 #9
0
 @Override
 public <D extends Definition> Set<DefDescriptor<D>> find(DefDescriptor<D> matcher) {
   Set<DefDescriptor<D>> matched;
   if (matcher.getNamespace().equals("*")) {
     matched = new LinkedHashSet<DefDescriptor<D>>();
     String qualifiedNamePattern = null;
     switch (matcher.getDefType()) {
       case CONTROLLER:
       case TESTSUITE:
       case MODEL:
       case RENDERER:
       case HELPER:
       case STYLE:
       case TYPE:
       case PROVIDER:
       case SECURITY_PROVIDER:
         qualifiedNamePattern = "%s://%s.%s";
         break;
       case ATTRIBUTE:
       case LAYOUT:
       case LAYOUT_ITEM:
       case TESTCASE:
       case APPLICATION:
       case COMPONENT:
       case INTERFACE:
       case EVENT:
       case DOCUMENTATION:
       case LAYOUTS:
       case NAMESPACE:
       case THEME:
         qualifiedNamePattern = "%s://%s:%s";
         break;
       case ACTION:
         // TODO: FIXME
         throw new AuraRuntimeException("Find on ACTION defs not supported.");
     }
     for (String namespace : delegateRegistries.getAllNamespaces()) {
       String qualifiedName =
           String.format(
               qualifiedNamePattern,
               matcher.getPrefix() != null ? matcher.getPrefix() : "*",
               namespace,
               matcher.getName() != null ? matcher.getName() : "*");
       @SuppressWarnings("unchecked")
       DefDescriptor<D> namespacedMatcher =
           (DefDescriptor<D>)
               DefDescriptorImpl.getInstance(
                   qualifiedName, matcher.getDefType().getPrimaryInterface());
       DefRegistry<D> registry = getRegistryFor(namespacedMatcher);
       if (registry != null) {
         matched.addAll(registry.find(namespacedMatcher));
       }
     }
   } else {
     matched = getRegistryFor(matcher).find(matcher);
   }
   if (localDescs != null) {
     DescriptorFilter filter = new DescriptorFilter(matcher.getQualifiedName());
     for (DefDescriptor<? extends Definition> desc : localDescs) {
       if (filter.matchDescriptor(desc)) {
         @SuppressWarnings("unchecked")
         DefDescriptor<D> localDesc = (DefDescriptor<D>) desc;
         matched.add(localDesc);
       }
     }
   }
   return matched;
 }