@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()); }
@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()); }
@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()); }
@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()); }
@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); } }