
dagger.grpc.server.processor.SourceGenerator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dagger-grpc-server-processor Show documentation
Show all versions of dagger-grpc-server-processor Show documentation
A fast dependency injector for Android and Java.
The newest version!
/*
* Copyright (C) 2016 The Dagger Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dagger.grpc.server.processor;
import com.squareup.javapoet.AnnotationSpec;
import com.squareup.javapoet.ClassName;
import com.squareup.javapoet.JavaFile;
import com.squareup.javapoet.TypeSpec;
/**
* An object that generates one top-level type.
*/
abstract class SourceGenerator {
private final String packageName;
protected SourceGenerator(String packageName) {
this.packageName = packageName;
}
public JavaFile javaFile() {
return JavaFile.builder(packageName, createType()).build();
}
/**
* Creates the type to write.
*/
protected abstract TypeSpec createType();
/** Class names and annotation specs for types in the {@link dagger} package. */
protected static final class Dagger {
private Dagger() {}
static AnnotationSpec binds() {
return AnnotationSpec.builder(ClassName.get("dagger", "Binds")).build();
}
static AnnotationSpec intoSet() {
return AnnotationSpec.builder(ClassName.get("dagger.multibindings", "IntoSet")).build();
}
static AnnotationSpec provides() {
return AnnotationSpec.builder(ClassName.get("dagger", "Provides")).build();
}
/** A {@code @dagger.Module} annotation that includes the given module classes. */
static AnnotationSpec module(ClassName... includedModules) {
AnnotationSpec.Builder module = AnnotationSpec.builder(ClassName.get("dagger", "Module"));
for (ClassName includedModule : includedModules) {
module.addMember("includes", "$T.class", includedModule);
}
return module.build();
}
/** Class names and annotation specs for types in the {@link dagger.grpc} package. */
protected static final class GrpcServer {
private GrpcServer() {}
static final ClassName PROXY_SERVER_CALL_HANDLER =
ClassName.get("dagger.grpc.server", "ProxyServerCallHandler");
static final ClassName GRPC_CALL_METADATA_MODULE =
ClassName.get("dagger.grpc.server", "GrpcCallMetadataModule");
static final ClassName SERVICE_DEFINITION_FACTORY =
PROXY_SERVER_CALL_HANDLER.nestedClass("ServiceDefinitionFactory");
}
}
/** Class names and annotation specs for types in the {@link io.grpc} package. */
protected static final class IoGrpc {
private IoGrpc() {}
static final ClassName BINDABLE_SERVICE = ClassName.get("io.grpc", "BindableService");
static final ClassName METADATA = ClassName.get("io.grpc", "Metadata");
static final ClassName METHOD_DESCRIPTOR = ClassName.get("io.grpc", "MethodDescriptor");
static final ClassName SERVER_INTERCEPTOR =
ClassName.get("io.grpc", "ServerInterceptor");
static final ClassName SERVER_INTERCEPTORS =
ClassName.get("io.grpc", "ServerInterceptors");
static final ClassName SERVER_SERVICE_DEFINITION =
ClassName.get("io.grpc", "ServerServiceDefinition");
}
/** Class names and annotation specs for types in the {@link javax.inject} package. */
protected static final class JavaxInject {
private JavaxInject() {}
static AnnotationSpec inject() {
return AnnotationSpec.builder(ClassName.get("javax.inject", "Inject")).build();
}
static AnnotationSpec singleton() {
return AnnotationSpec.builder(ClassName.get("javax.inject", "Singleton")).build();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy