// Path: spring-influxdb-orm/src/main/java/com/vgerbot/orm/influxdb/exec/Executor.java
// public abstract class Executor {
// 	protected final InfluxDBRepository repository;
// 
// 	public Executor(InfluxDBRepository repository) {
// 		this.repository = repository;
// 	}
// 
// 	public abstract ResultContext execute(MapperMethod method, Map<String, ParameterValue> parameters);
// }
// 
// Path: spring-influxdb-orm/src/main/java/com/vgerbot/orm/influxdb/exec/SpecificExecutor.java
// public class SpecificExecutor extends AnnotationExecutor<SpecifiedExecutor> {
// 	private final Executor realExecutor;
// 
// 	public SpecificExecutor(InfluxDBRepository repository, SpecifiedExecutor annotation) {
// 		super(repository, annotation);
// 		realExecutor = instantiateRealExecutor(repository, annotation);
// 	}
// 
// 	private Executor instantiateRealExecutor(InfluxDBRepository repository, SpecifiedExecutor annotation) {
// 		Class<? extends Executor> executorClass = annotation.value();
// 		try {
// 			Constructor<? extends Executor> constructor = executorClass.getDeclaredConstructor(InfluxDBRepository.class);
// 			if (!constructor.isAccessible()) {
// 				constructor.setAccessible(true);
// 			}
// 			return constructor.newInstance(repository);
// 		} catch (NoSuchMethodException | SecurityException e) {
// 			throw new InfluxDBException("invalid executor constructor", e);
// 		} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
// 			throw new InfluxDBException("an error occured while instantiating executor", e);
// 		}
// 	}
// 
// 	@Override
// 	public ResultContext execute(MapperMethod method, Map<String, ParameterValue> parameters) {
// 		return realExecutor.execute(method, parameters);
// 	}
// }


import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.vgerbot.orm.influxdb.exec.Executor;
import com.vgerbot.orm.influxdb.exec.SpecificExecutor;
package com.vgerbot.orm.influxdb.annotations;



@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@AnnotateExecutor(SpecificExecutor.class)
public @interface SpecifiedExecutor {
// Path: spring-influxdb-orm/src/main/java/com/vgerbot/orm/influxdb/exec/Executor.java
// public abstract class Executor {
// 	protected final InfluxDBRepository repository;
// 
// 	public Executor(InfluxDBRepository repository) {
// 		this.repository = repository;
// 	}
// 
// 	public abstract ResultContext execute(MapperMethod method, Map<String, ParameterValue> parameters);
// }
// 
// Path: spring-influxdb-orm/src/main/java/com/vgerbot/orm/influxdb/exec/SpecificExecutor.java
// public class SpecificExecutor extends AnnotationExecutor<SpecifiedExecutor> {
// 	private final Executor realExecutor;
// 
// 	public SpecificExecutor(InfluxDBRepository repository, SpecifiedExecutor annotation) {
// 		super(repository, annotation);
// 		realExecutor = instantiateRealExecutor(repository, annotation);
// 	}
// 
// 	private Executor instantiateRealExecutor(InfluxDBRepository repository, SpecifiedExecutor annotation) {
// 		Class<? extends Executor> executorClass = annotation.value();
// 		try {
// 			Constructor<? extends Executor> constructor = executorClass.getDeclaredConstructor(InfluxDBRepository.class);
// 			if (!constructor.isAccessible()) {
// 				constructor.setAccessible(true);
// 			}
// 			return constructor.newInstance(repository);
// 		} catch (NoSuchMethodException | SecurityException e) {
// 			throw new InfluxDBException("invalid executor constructor", e);
// 		} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
// 			throw new InfluxDBException("an error occured while instantiating executor", e);
// 		}
// 	}
// 
// 	@Override
// 	public ResultContext execute(MapperMethod method, Map<String, ParameterValue> parameters) {
// 		return realExecutor.execute(method, parameters);
// 	}
// }


// Path: spring-influxdb-orm/src/main/java/com/vgerbot/orm/influxdb/annotations/SpecifiedExecutor.java
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.vgerbot.orm.influxdb.exec.Executor;
import com.vgerbot.orm.influxdb.exec.SpecificExecutor;

package com.vgerbot.orm.influxdb.annotations;



@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@AnnotateExecutor(SpecificExecutor.class)
public @interface SpecifiedExecutor {
	Class<? extends Executor> value();