1275e7088223c097c1a2df718455bede42bc9efedYigit Boyar/*
2275e7088223c097c1a2df718455bede42bc9efedYigit Boyar * Copyright (C) 2017 The Android Open Source Project
3275e7088223c097c1a2df718455bede42bc9efedYigit Boyar *
4275e7088223c097c1a2df718455bede42bc9efedYigit Boyar * Licensed under the Apache License, Version 2.0 (the "License");
5275e7088223c097c1a2df718455bede42bc9efedYigit Boyar * you may not use this file except in compliance with the License.
6275e7088223c097c1a2df718455bede42bc9efedYigit Boyar * You may obtain a copy of the License at
7275e7088223c097c1a2df718455bede42bc9efedYigit Boyar *
8275e7088223c097c1a2df718455bede42bc9efedYigit Boyar *      http://www.apache.org/licenses/LICENSE-2.0
9275e7088223c097c1a2df718455bede42bc9efedYigit Boyar *
10275e7088223c097c1a2df718455bede42bc9efedYigit Boyar * Unless required by applicable law or agreed to in writing, software
11275e7088223c097c1a2df718455bede42bc9efedYigit Boyar * distributed under the License is distributed on an "AS IS" BASIS,
12275e7088223c097c1a2df718455bede42bc9efedYigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13275e7088223c097c1a2df718455bede42bc9efedYigit Boyar * See the License for the specific language governing permissions and
14275e7088223c097c1a2df718455bede42bc9efedYigit Boyar * limitations under the License.
15275e7088223c097c1a2df718455bede42bc9efedYigit Boyar */
16275e7088223c097c1a2df718455bede42bc9efedYigit Boyar
17bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viverettepackage androidx.room.vo
18275e7088223c097c1a2df718455bede42bc9efedYigit Boyar
19bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.room.ext.hasAnyOf
20bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.room.ext.typeName
21275e7088223c097c1a2df718455bede42bc9efedYigit Boyarimport com.squareup.javapoet.TypeName
22275e7088223c097c1a2df718455bede42bc9efedYigit Boyarimport javax.lang.model.element.ExecutableElement
23275e7088223c097c1a2df718455bede42bc9efedYigit Boyarimport javax.lang.model.element.Modifier
24275e7088223c097c1a2df718455bede42bc9efedYigit Boyarimport javax.lang.model.type.TypeMirror
25275e7088223c097c1a2df718455bede42bc9efedYigit Boyar
26275e7088223c097c1a2df718455bede42bc9efedYigit Boyar/**
27275e7088223c097c1a2df718455bede42bc9efedYigit Boyar * Generated when we parse a method annotated with TypeConverter.
28275e7088223c097c1a2df718455bede42bc9efedYigit Boyar */
29275e7088223c097c1a2df718455bede42bc9efedYigit Boyardata class CustomTypeConverter(val type: TypeMirror,
306f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas                               val method: ExecutableElement,
31275e7088223c097c1a2df718455bede42bc9efedYigit Boyar                               val from: TypeMirror, val to: TypeMirror) {
32275e7088223c097c1a2df718455bede42bc9efedYigit Boyar    val typeName: TypeName by lazy { type.typeName() }
33275e7088223c097c1a2df718455bede42bc9efedYigit Boyar    val fromTypeName: TypeName by lazy { from.typeName() }
34275e7088223c097c1a2df718455bede42bc9efedYigit Boyar    val toTypeName: TypeName by lazy { to.typeName() }
35275e7088223c097c1a2df718455bede42bc9efedYigit Boyar    val methodName by lazy { method.simpleName.toString() }
36275e7088223c097c1a2df718455bede42bc9efedYigit Boyar    val isStatic by lazy { method.hasAnyOf(Modifier.STATIC) }
37275e7088223c097c1a2df718455bede42bc9efedYigit Boyar}
38