// Path: spring-influxdb-orm-autoconfigure/src/main/java/com/vgerbot/orm/influxdb/configure/MeasurementScannerAutoConfigure.java
// public class MeasurementScannerAutoConfigure implements ImportBeanDefinitionRegistrar, BeanFactoryAware {
//     private BeanFactory beanFactory;
//     @Override
//     public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
//         AnnotationAttributes attributes = AnnotationAttributes.fromMap(
//                 importingClassMetadata.getAnnotationAttributes(InfluxDBORM.class.getName(), false)
//         );
//         String[] measurementPackages = null;
//         if (attributes != null) {
//             measurementPackages = attributes.getStringArray(InfluxDBORM.FIELD_NAME_ENTITY_BASE_PACKAGE);
//         }
//         if (ArrayUtils.isEmpty(measurementPackages)) {
//             if(AutoConfigurationPackages.has(beanFactory)) {
//                 List<String> packages = AutoConfigurationPackages.get(beanFactory);
//                 measurementPackages = packages.toArray(new String[packages.size()]);
//             }
//         }
//         Assert.notEmpty(measurementPackages, "At least one base measurement package must be specified");
//         BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(ClassPathMeasurementScannerFactoryBean.class);
//         builder.addPropertyValue(ClassPathMeasurementScannerFactoryBean.MEASUREMENT_PACKAGE, StringUtils.join(measurementPackages, ","));
//         BeanDefinition definition = builder.getBeanDefinition();
//         String beanName = BeanDefinitionReaderUtils.generateBeanName(definition, registry);
//         registry.registerBeanDefinition(beanName, definition);
//     }
// 
//     @Override
//     public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
//         this.beanFactory = beanFactory;
//     }
// }


import com.vgerbot.orm.influxdb.configure.MeasurementScannerAutoConfigure;
import org.springframework.context.annotation.Import;
import java.lang.annotation.*;
package com.vgerbot.orm.influxdb.annotations;



@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
// Path: spring-influxdb-orm-autoconfigure/src/main/java/com/vgerbot/orm/influxdb/configure/MeasurementScannerAutoConfigure.java
// public class MeasurementScannerAutoConfigure implements ImportBeanDefinitionRegistrar, BeanFactoryAware {
//     private BeanFactory beanFactory;
//     @Override
//     public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
//         AnnotationAttributes attributes = AnnotationAttributes.fromMap(
//                 importingClassMetadata.getAnnotationAttributes(InfluxDBORM.class.getName(), false)
//         );
//         String[] measurementPackages = null;
//         if (attributes != null) {
//             measurementPackages = attributes.getStringArray(InfluxDBORM.FIELD_NAME_ENTITY_BASE_PACKAGE);
//         }
//         if (ArrayUtils.isEmpty(measurementPackages)) {
//             if(AutoConfigurationPackages.has(beanFactory)) {
//                 List<String> packages = AutoConfigurationPackages.get(beanFactory);
//                 measurementPackages = packages.toArray(new String[packages.size()]);
//             }
//         }
//         Assert.notEmpty(measurementPackages, "At least one base measurement package must be specified");
//         BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(ClassPathMeasurementScannerFactoryBean.class);
//         builder.addPropertyValue(ClassPathMeasurementScannerFactoryBean.MEASUREMENT_PACKAGE, StringUtils.join(measurementPackages, ","));
//         BeanDefinition definition = builder.getBeanDefinition();
//         String beanName = BeanDefinitionReaderUtils.generateBeanName(definition, registry);
//         registry.registerBeanDefinition(beanName, definition);
//     }
// 
//     @Override
//     public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
//         this.beanFactory = beanFactory;
//     }
// }


// Path: spring-influxdb-orm-autoconfigure/src/main/java/com/vgerbot/orm/influxdb/annotations/InfluxDBORM.java
import com.vgerbot.orm.influxdb.configure.MeasurementScannerAutoConfigure;
import org.springframework.context.annotation.Import;
import java.lang.annotation.*;

package com.vgerbot.orm.influxdb.annotations;



@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(MeasurementScannerAutoConfigure.class)