コード例 #1
0
  @Test
  public void testSubInterface() throws Exception {
    MetadataReader metadataReader = factory.getMetadataReader("org.test.spring.SubInterface");

    ClassMetadata metadata = metadataReader.getClassMetadata();
    assertEquals("org.test.spring.SubInterface", metadata.getClassName());
    assertEquals(1, metadata.getInterfaceNames().length);
    assertEquals("org.test.spring.PlainInterface", metadata.getInterfaceNames()[0]);

    assertFalse(metadata.hasEnclosingClass());
    assertNull(metadata.getEnclosingClassName());

    assertTrue(metadata.hasSuperClass());
    assertEquals("java.lang.Object", metadata.getSuperClassName());
  }
コード例 #2
0
  @Test
  public void testSubtypeOfGenericSupertype() throws Exception {
    MetadataReader metadataReader = factory.getMetadataReader("org.test.spring.GenericSubtype");

    ClassMetadata metadata = metadataReader.getClassMetadata();
    assertEquals("org.test.spring.GenericSubtype", metadata.getClassName());
    assertEquals(0, metadata.getInterfaceNames().length);

    assertFalse(metadata.hasEnclosingClass());
    assertNull(metadata.getEnclosingClassName());

    assertTrue(metadata.hasSuperClass());
    assertEquals("org.test.spring.GenericSupertype", metadata.getSuperClassName());
  }
コード例 #3
0
  @Test
  public void testSubClassOfBinaryType() throws Exception {
    MetadataReader metadataReader =
        factory.getMetadataReader("org.test.spring.SubClassOfBinaryType");

    ClassMetadata metadata = metadataReader.getClassMetadata();
    assertEquals("org.test.spring.SubClassOfBinaryType", metadata.getClassName());
    assertEquals(0, metadata.getInterfaceNames().length);

    assertFalse(metadata.hasEnclosingClass());
    assertNull(metadata.getEnclosingClassName());

    assertTrue(metadata.hasSuperClass());
    assertEquals("org.springframework.core.SpringVersion", metadata.getSuperClassName());
  }
コード例 #4
0
  @Test
  public void testSubClass() throws Exception {
    MetadataReader metadataReader =
        factory.getMetadataReader("org.test.spring.SubClassWithoutAnnotation");

    ClassMetadata metadata = metadataReader.getClassMetadata();
    assertEquals("org.test.spring.SubClassWithoutAnnotation", metadata.getClassName());
    assertEquals(0, metadata.getInterfaceNames().length);

    assertFalse(metadata.hasEnclosingClass());
    assertNull(metadata.getEnclosingClassName());

    assertTrue(metadata.hasSuperClass());
    assertEquals("org.test.spring.SimpleConfigurationClass", metadata.getSuperClassName());
  }
コード例 #5
0
  @Test
  public void testSimpleClass() throws Exception {
    MetadataReader metadataReader = factory.getMetadataReader("org.test.spring.NoAnnotations");

    ClassMetadata metadata = metadataReader.getClassMetadata();
    assertEquals("org.test.spring.NoAnnotations", metadata.getClassName());
    assertEquals(0, metadata.getInterfaceNames().length);

    assertFalse(metadata.hasEnclosingClass());
    assertNull(metadata.getEnclosingClassName());

    assertTrue(metadata.hasSuperClass());
    assertEquals("java.lang.Object", metadata.getSuperClassName());

    assertTrue(metadata instanceof JdtConnectedMetadata);
    IType type = JdtUtils.getJavaType(project, "org.test.spring.NoAnnotations");
    assertEquals(type, ((JdtConnectedMetadata) metadata).getJavaElement());
  }
 /**
  * @author:shaochuan.wangsc
  * @date:2010-3-24
  */
 private void scan(WebModuleConfigurer webModuleConfigurer) {
   try {
     String pattern =
         ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
             + ClassUtils.convertClassNameToResourcePath(
                 webModuleConfigurer.getModuleBasePackage())
             + webModuleConfigurer.getContextPackage()
             + RESOURCE_PATTERN;
     Resource[] resources = this.resourcePatternResolver.getResources(pattern);
     MetadataReaderFactory readerFactory =
         new CachingMetadataReaderFactory(this.resourcePatternResolver);
     //
     for (Resource resource : resources) {
       if (resource.isReadable()) {
         MetadataReader reader = readerFactory.getMetadataReader(resource);
         ClassMetadata classMetadata = reader.getClassMetadata();
         //
         if (classMetadata.isConcrete()) {
           String className = classMetadata.getClassName();
           if (!(BeanUtils.isWidget(className) || BeanUtils.isController(className))) {
             continue;
           }
           //
           AutowireCapableBeanFactory beanFactory =
               applicationContext.getAutowireCapableBeanFactory();
           Object clazz =
               beanFactory.createBean(
                   classLoader.loadClass(className),
                   AutowireCapableBeanFactory.AUTOWIRE_NO,
                   false);
           //
           if (clazz instanceof FreeMarkerWidget) {
             String widget = className.replace(webModuleConfigurer.getModuleBasePackage(), "");
             widget = ClassUtils.convertClassNameToResourcePath(widget);
             widget = BeanUtils.stripEndString(widget, BeanUtils.WIDGET_BEAN_SUFFIX);
             String widgetKey = BeanUtils.makeControllerOrWidgetMappingKey(widget);
             webModuleConfigurer.getWidgetMap().put(widgetKey, (FreeMarkerWidget) clazz);
             widgets.put(widgetKey, (FreeMarkerWidget) clazz);
           }
           //
           if (clazz instanceof Controller) {
             String controller = className.replace(webModuleConfigurer.getModuleBasePackage(), "");
             controller = ClassUtils.convertClassNameToResourcePath(controller);
             controller = BeanUtils.stripEndString(controller, BeanUtils.CONTROLLER_BEAN_SUFFIX);
             String controllerKey = BeanUtils.makeControllerOrWidgetMappingKey(controller);
             String controllerRule =
                 webModuleConfigurer.getContextPackage() + CONTROLLERS_PACKAGE + SLASH;
             if (controllerKey.startsWith(controllerRule)) {
               //
               controllerKey =
                   controllerKey.replaceFirst(controllerRule, webModuleConfigurer.getContext());
               //
               if ("/index".equals(controllerKey)) {
                 webModuleConfigurer.getControllerMap().put("/", (Controller) clazz);
                 controllers.put("/", (Controller) clazz);
                 defaultListableBeanFactory.registerSingleton("/", (Controller) clazz);
               }
               //
               String controller_key = BeanUtils.processControllerKey(controllerKey);
               String controller_keyv = controller_key + webModuleConfigurer.getUriExtension();
               //
               webModuleConfigurer.getControllerMap().put(controller_keyv, (Controller) clazz);
               controllers.put(controller_keyv, (Controller) clazz);
               defaultListableBeanFactory.registerSingleton(controller_keyv, (Controller) clazz);
             }
           }
         }
       }
     }
   } catch (IOException e) {
     logger.error("Failed to scan classpath for unlisted classes", e);
     throw new RuntimeException("Failed to scan classpath for unlisted classes", e);
   } catch (ClassNotFoundException e) {
     logger.error("Failed to load classes from classpath", e);
     throw new RuntimeException("Failed to load classes from classpath", e);
   }
 }