List of usage examples for org.springframework.core.type.classreading MetadataReaderFactory getMetadataReader
MetadataReader getMetadataReader(Resource resource) throws IOException;
From source file:Main.java
private static Class getClassOrNull(MetadataReaderFactory readerFactory, Resource resource) { try {// ww w . j a v a2 s . c om MetadataReader metadataReader = readerFactory.getMetadataReader(resource); return Class.forName(metadataReader.getClassMetadata().getClassName()); } catch (Exception e) { return null; } }
From source file:com.foilen.smalltools.tools.Hibernate4Tools.java
/** * Generate the SQL file. This is based on the code in {@link LocalSessionFactoryBuilder#scanPackages(String...)} * * @param dialect//from w w w.java 2 s.co m * the dialect (e.g: org.hibernate.dialect.MySQL5InnoDBDialect ) * @param outputSqlFile * where to put the generated SQL file * @param useUnderscore * true: to have tables names like "employe_manager" ; false: to have tables names like "employeManager" * @param packagesToScan * the packages where your entities are */ @SuppressWarnings("deprecation") public static void generateSqlSchema(Class<? extends Dialect> dialect, String outputSqlFile, boolean useUnderscore, String... packagesToScan) { // Configuration Configuration configuration = new Configuration(); if (useUnderscore) { configuration.setNamingStrategy(new ImprovedNamingStrategy()); } Properties properties = new Properties(); properties.setProperty(AvailableSettings.DIALECT, dialect.getName()); // Scan packages Set<String> classNames = new TreeSet<String>(); Set<String> packageNames = new TreeSet<String>(); try { for (String pkg : packagesToScan) { String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + ClassUtils.convertClassNameToResourcePath(pkg) + RESOURCE_PATTERN; Resource[] resources = resourcePatternResolver.getResources(pattern); MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory(resourcePatternResolver); for (Resource resource : resources) { if (resource.isReadable()) { MetadataReader reader = readerFactory.getMetadataReader(resource); String className = reader.getClassMetadata().getClassName(); if (matchesEntityTypeFilter(reader, readerFactory)) { classNames.add(className); } else if (className.endsWith(PACKAGE_INFO_SUFFIX)) { packageNames .add(className.substring(0, className.length() - PACKAGE_INFO_SUFFIX.length())); } } } } } catch (IOException ex) { throw new MappingException("Failed to scan classpath for unlisted classes", ex); } try { for (String className : classNames) { configuration.addAnnotatedClass(resourcePatternResolver.getClassLoader().loadClass(className)); } for (String packageName : packageNames) { configuration.addPackage(packageName); } } catch (ClassNotFoundException ex) { throw new MappingException("Failed to load annotated classes from classpath", ex); } // Exportation SchemaExport schemaExport = new SchemaExport(configuration, properties); schemaExport.setOutputFile(outputSqlFile); schemaExport.setDelimiter(";"); schemaExport.setFormat(true); schemaExport.execute(true, false, false, true); }
From source file:com.fantasy.Application.java
private static List<Class> findTypes(String basePackage) throws IOException, ClassNotFoundException { ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(); MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resourcePatternResolver); List<Class> candidates = new ArrayList(); String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + resolveBasePackage(basePackage) + "/" + "**/*.class"; Resource[] resources = resourcePatternResolver.getResources(packageSearchPath); for (Resource resource : resources) { if (resource.isReadable()) { MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource); if (isCandidate(metadataReader)) { candidates.add(Class.forName(metadataReader.getClassMetadata().getClassName())); }//w w w . ja v a2s.c o m } } return candidates; }
From source file:com.crudetech.junit.categories.Categories.java
static Class<?>[] allTestClassesInClassPathMatchingPattern(String pattern) throws InitializationError { List<Class<?>> classes = new ArrayList<Class<?>>(); PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); MetadataReaderFactory metaDataReaderFactory = new CachingMetadataReaderFactory(); try {//from www . j av a 2 s . c o m String classPattern = "classpath:" + pattern.replace('.', '/') + ".class"; Resource[] res = resolver.getResources(classPattern); for (Resource r : res) { if (!r.isReadable()) { continue; } MetadataReader reader = metaDataReaderFactory.getMetadataReader(r); Class<?> c = Class.forName(reader.getClassMetadata().getClassName()); if (Modifier.isAbstract(c.getModifiers())) { continue; } classes.add(c); } return classes.toArray(new Class<?>[classes.size()]); } catch (Exception e) { throw new InitializationError(e); } }
From source file:org.javelin.sws.ext.bind.SweJaxbContextFactory.java
/** * <p>Determines mapped classes in the context path and invokes {@link #createContext(Class[], Map)}</p> * <p>JAXB-RI uses {@code ObjectFactory} class and/or {@code jaxb.index} file</p> * <p>see: com.sun.xml.bind.v2.ContextFactory.createContext(String, ClassLoader, Map<String, Object>)</p> * /*from w ww .j av a 2s . co m*/ * @param contextPath * @param classLoader * @param properties * @return * @throws IOException */ public static JAXBContext createContext(String contextPath, ClassLoader classLoader, Map<String, ?> properties) throws IOException { Assert.notNull(contextPath, "The contextPath should not be null"); PathMatchingResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver( classLoader); MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resourcePatternResolver); List<Class<?>> classes = new LinkedList<Class<?>>(); // scan the package(s) String[] packages = StringUtils.tokenizeToStringArray(contextPath, ":"); for (String pkg : packages) { log.trace("Scanning package: {}", pkg); Resource[] resources = resourcePatternResolver .getResources(ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + ClassUtils.convertClassNameToResourcePath(pkg) + "/*.class"); for (Resource classResource : resources) { MetadataReader mdReader = metadataReaderFactory.getMetadataReader(classResource); Class<?> cls = ClassUtils.resolveClassName(mdReader.getClassMetadata().getClassName(), classLoader); if (cls.getSimpleName().equals("package-info")) { XmlSchema xmlSchema = AnnotationUtils.getAnnotation(cls.getPackage(), XmlSchema.class); String namespace = xmlSchema == null || xmlSchema.namespace() == null ? NamespaceUtils.packageNameToNamespace(cls.getPackage()) : xmlSchema.namespace(); log.trace(" - found package-info: {}, namespace: {}", cls.getPackage().getName(), namespace); } else { log.trace(" - found class: {}", mdReader.getClassMetadata().getClassName()); classes.add(cls); } } } return createContext(classes.toArray(new Class[0]), properties); }
From source file:com.baomidou.framework.spring.SpringScanPackage.java
/** * <p>/*from www . j av a2s .com*/ * ???,? * </p> * * @param scanPackages * ??package * @return */ public static Set<String> findPackageClass(String scanPackages) { Set<String> clazzSet = new HashSet<String>(); ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver(); MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver); String pkg = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + ClassUtils.convertClassNameToResourcePath(scanPackages) + "/**/*.class"; /* * ??Resource * ClassLoader.getResource("META-INF")????????? */ try { Resource[] resources = resolver.getResources(pkg); if (resources != null && resources.length > 0) { for (Resource resource : resources) { if (resource.isReadable()) { MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource); if (metadataReader != null) { clazzSet.add(metadataReader.getClassMetadata().getClassName()); } } } } } catch (Exception e) { e.printStackTrace(); } return clazzSet; }
From source file:com.baomidou.mybatisplus.toolkit.PackageHelper.java
/** * <p>/* w w w . j ava 2s . c o m*/ * ??? * </p> * <p> * <property name="typeAliasesPackage" value="com.baomidou.*.entity"/> * </p> * * @param typeAliasesPackage * ?? * @return */ public static String[] convertTypeAliasesPackage(String typeAliasesPackage) { ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver(); MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver); String pkg = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + ClassUtils.convertClassNameToResourcePath(typeAliasesPackage) + "/*.class"; /* * ??Resource * ClassLoader.getResource("META-INF")????????? */ try { Set<String> set = new HashSet<String>(); Resource[] resources = resolver.getResources(pkg); if (resources != null && resources.length > 0) { MetadataReader metadataReader = null; for (Resource resource : resources) { if (resource.isReadable()) { metadataReader = metadataReaderFactory.getMetadataReader(resource); set.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage() .getName()); } } } if (!set.isEmpty()) { return set.toArray(new String[] {}); } else { throw new MybatisPlusException("not find typeAliasesPackage:" + pkg); } } catch (Exception e) { throw new MybatisPlusException("not find typeAliasesPackage:" + pkg, e); } }
From source file:org.duracloud.account.db.util.security.impl.AnnotationParserImpl.java
private MetadataReader getMetadataReader(Class<?> targetClass) { MetadataReaderFactory metadataReaderFactory = new SimpleMetadataReaderFactory(); try {//w w w . j a va 2 s . com return metadataReaderFactory.getMetadataReader(targetClass.getName()); } catch (IOException e) { log.warn("Error reading metadata. {}", e.getMessage()); throw new DuraCloudRuntimeException(e); } }
From source file:com.github.yulechen.springannotation.test.ConfigurationClassUtils.java
/** * Check whether the given bean definition is a candidate for a * configuration class (or a nested component class declared within a * configuration/component class, to be auto-registered as well), and mark * it accordingly.//from ww w . j av a 2 s . com * * @param beanDef * the bean definition to check * @param metadataReaderFactory * the current factory in use by the caller * @return whether the candidate qualifies as (any kind of) configuration * class */ public static boolean checkConfigurationClassCandidate(BeanDefinition beanDef, MetadataReaderFactory metadataReaderFactory) { String className = beanDef.getBeanClassName(); if (className == null) { return false; } AnnotationMetadata metadata; if (beanDef instanceof AnnotatedBeanDefinition && className.equals(((AnnotatedBeanDefinition) beanDef).getMetadata().getClassName())) { // Can reuse the pre-parsed metadata from the given // BeanDefinition... metadata = ((AnnotatedBeanDefinition) beanDef).getMetadata(); } else if (beanDef instanceof AbstractBeanDefinition && ((AbstractBeanDefinition) beanDef).hasBeanClass()) { // Check already loaded Class if present... // since we possibly can't even load the class file for this Class. Class<?> beanClass = ((AbstractBeanDefinition) beanDef).getBeanClass(); metadata = new StandardAnnotationMetadata(beanClass, true); } else { try { MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(className); metadata = metadataReader.getAnnotationMetadata(); } catch (IOException ex) { if (logger.isDebugEnabled()) { logger.debug( "Could not find class file for introspecting configuration annotations: " + className, ex); } return false; } } if (isFullConfigurationCandidate(metadata)) { beanDef.setAttribute(CONFIGURATION_CLASS_ATTRIBUTE, CONFIGURATION_CLASS_FULL); } else if (isLiteConfigurationCandidate(metadata)) { beanDef.setAttribute(CONFIGURATION_CLASS_ATTRIBUTE, CONFIGURATION_CLASS_LITE); } else { return false; } // It's a full or lite configuration candidate... Let's determine the // order value, if any. Map<String, Object> orderAttributes = metadata.getAnnotationAttributes(Order.class.getName()); if (orderAttributes != null) { beanDef.setAttribute(ORDER_ATTRIBUTE, orderAttributes.get(AnnotationUtils.VALUE)); } return true; }
From source file:com.zht.common.generator.util.LoadPackageClasses.java
/** * ??BeanClass??/* w ww. j a v a2 s .c om*/ * @return * @throws IOException * @throws ClassNotFoundException */ public Set<Class<?>> getClassSet() throws IOException, ClassNotFoundException { this.classSet.clear(); if (!this.packagesList.isEmpty()) { for (String pkg : this.packagesList) { String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + ClassUtils.convertClassNameToResourcePath(pkg) + 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); String className = reader.getClassMetadata().getClassName(); if (matchesEntityTypeFilter(reader, readerFactory)) { this.classSet.add(Class.forName(className)); } } } } } // // if (logger.isInfoEnabled()){ // for (Class<?> clazz : this.classSet) { // //logger.info(String.format("Found class:%s", clazz.getName())); // } // } return this.classSet; }