类com.google.inject.spi.Dependency源码实例Demo

下面列出了怎么用com.google.inject.spi.Dependency的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: ProjectAres   文件: ModuleDependencyTransformer.java
public ModuleDependencyTransformer(TypeLiteral<M> type) {
    final ModuleDescription annotation = type.getRawType().getAnnotation(ModuleDescription.class);
    if(annotation == null) {
        requiresKeys = ImmutableSet.of();
        dependsKeys = followsKeys = ImmutableSet.of();
    } else {
        requiresKeys = Keys.get(annotation.requires());
        dependsKeys = Keys.optional(annotation.depends());
        followsKeys = Keys.optional(annotation.follows());
    }

    dependencies = Streams.concat(requiresKeys.stream(),
                                  dependsKeys.stream(),
                                  followsKeys.stream())
                          .map(Dependency::get)
                          .collect(Collectors.toImmutableSet());
}
 
源代码2 项目: ProjectAres   文件: Injection.java
/**
 * Return all direct dependencies injected into the given type
 */
public static Stream<Dependency<?>> dependencies(Class<?> type) {
    return Stream.concat(
        Stream.of(InjectionPoint.forConstructorOf(type)),
        InjectionPoint.forInstanceMethodsAndFields(type).stream()
    ).flatMap(ip -> ip.getDependencies().stream());
}
 
源代码3 项目: ProjectAres   文件: InjectableMethod.java
public Provider<T> asProvider() {
    return new ProviderWithDependencies<T>() {
        @Override
        public T get() {
            return Injection.wrappingExceptions(asSupplier());
        }

        @Override
        public Set<Dependency<?>> getDependencies() {
            return dependencies;
        }
    };
}
 
源代码4 项目: ProjectAres   文件: DependencyCollector.java
public DependencyCollector log(Logger logger, Level level) {
    logger.log(level, "Dumping all dependencies:");
    for(Map.Entry<TypeLiteral<?>, Collection<InjectionPoint>> entry : injectionPointsByType().asMap().entrySet()) {
        logger.log(level, entry.getKey().toString());
        for(InjectionPoint ip : entry.getValue()) {
            logger.log(level, "  " + ip.getMember());
            for(Dependency<?> dep : dependenciesByInjectionPoint().get(ip)) {
                logger.log(level, "    " + dep);
            }
        }
    }
    return this;
}
 
源代码5 项目: ProjectAres   文件: MemberInjectingFactory.java
@Inject public MemberInjectingFactory(TypeLiteral<T> type, MembersInjector<T> injector) {
    this.type = type;
    this.injector = injector;
    this.injectionPoint = InjectionPoint.forConstructorOf(type);
    this.constructor = (Constructor<T>) injectionPoint.getMember();
    this.constructor.setAccessible(true);

    dependencies.addAll(Dependency.forInjectionPoints(InjectionPoint.forInstanceMethodsAndFields(type)));
}
 
源代码6 项目: Orienteer   文件: AbstractDynamicProvider.java
private Class<?> getRequiredType() {
 	
 		Reflect context = Reflect.on(injector).call("enterContext");
try {
	Dependency<?> dependency = context.call("getDependency").get();
	return dependency.getKey().getTypeLiteral().getRawType();
} finally {
	context.call("close");
}
 }
 
源代码7 项目: ProjectAres   文件: ModuleDependencyTransformer.java
@Override
public Set<Dependency<?>> getDependencies() {
    return dependencies;
}
 
源代码8 项目: ProjectAres   文件: ModuleManifest.java
<T> void addDependency(List<Provider<? extends ProvisionWrapper<?>>> list, Class<T> module) {
    final Key<ProvisionWrapper<T>> key = ProvisionWrapper.keyOf(TypeLiteral.get(module));
    final Provider<ProvisionWrapper<T>> provider = getProvider(key);
    dependencies.add(Dependency.get(key));
    list.add(provider);
}
 
源代码9 项目: ProjectAres   文件: ModuleManifest.java
@Override
public Set<Dependency<?>> getDependencies() {
    return dependencies;
}
 
源代码10 项目: ProjectAres   文件: InjectableMethod.java
@Override
public Set<Dependency<?>> getDependencies() {
    return dependencies;
}
 
源代码11 项目: ProjectAres   文件: DependencyCollector.java
private void processDependency(Dependency<?> dependency) {
    dependenciesByKey.put(dependency.getKey(), dependency);
    dependenciesByInjectionPoint.put(dependency.getInjectionPoint(), dependency);
    requireKey(dependency.getKey());
}
 
源代码12 项目: ProjectAres   文件: Dependencies.java
public static Stream<Dependency<?>> forInstanceMethodsAndFields(Class<?> type) {
    return forInstanceMethodsAndFields(TypeLiteral.get(type));
}
 
源代码13 项目: ProjectAres   文件: Dependencies.java
public static Stream<Dependency<?>> forInstanceMethodsAndFields(TypeLiteral<?> type) {
    return InjectionPoint.forInstanceMethodsAndFields(type)
                         .stream()
                         .flatMap(point -> point.getDependencies().stream());
}
 
源代码14 项目: ProjectAres   文件: InnerFactoryManifest.java
@Override
protected void configure() {
    final InjectionPoint point = InjectionPoint.forConstructorOf(innerType);
    final Constructor<I> constructor = (Constructor<I>) point.getMember();
    constructor.setAccessible(true);

    if(point.getDependencies().isEmpty() || !Types.isAssignable(point.getDependencies().get(0).getKey().getTypeLiteral(), outerType)) {
        addError("Expected %s to take %s as the first parameter of its injectable constructor", innerType, outerType);
        return;
    }

    final Set<Dependency<?>> dependencies = point.getDependencies()
                                                 .stream()
                                                 .skip(1)
                                                 .collect(Collectors.toImmutableSet());

    final List<Provider<?>> providers = dependencies.stream()
                                                    .map(dep -> getProvider(dep.getKey()))
                                                    .collect(Collectors.toImmutableList());

    final MembersInjector<I> membersInjector = getMembersInjector(innerType);

    class FactoryImpl implements InnerFactory<O, I>, HasDependencies {
        @Override
        public Set<Dependency<?>> getDependencies() {
            return dependencies;
        }

        public I create(O outer) {
            final Object[] args = new Object[providers.size() + 1];

            args[0] = outer;

            for(int i = 0; i < providers.size(); i++) {
                args[i + 1] = providers.get(i).get();
            }

            return Injection.wrappingExceptions(() -> {
                final I instance = constructor.newInstance(args);
                membersInjector.injectMembers(instance);
                return instance;
            });
        }
    }

    bind(factoryKey).toInstance(new FactoryImpl());
}
 
源代码15 项目: ProjectAres   文件: MemberInjectingFactory.java
@Override
public Set<Dependency<?>> getDependencies() {
    return dependencies;
}
 
源代码16 项目: ProjectAres   文件: DependencyCollector.java
public SetMultimap<Key<?>, Dependency<?>> dependenciesByKey() { return dependenciesByKey; } 
源代码17 项目: ProjectAres   文件: DependencyCollector.java
public SetMultimap<InjectionPoint, Dependency<?>> dependenciesByInjectionPoint() { return dependenciesByInjectionPoint; } 
 类所在包
 同包方法