1d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar/*
2d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * Copyright (C) 2015 The Android Open Source Project
3d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * Licensed under the Apache License, Version 2.0 (the "License");
4d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * you may not use this file except in compliance with the License.
5d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * You may obtain a copy of the License at
6d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar *      http://www.apache.org/licenses/LICENSE-2.0
7d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * Unless required by applicable law or agreed to in writing, software
8d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * distributed under the License is distributed on an "AS IS" BASIS,
9d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * See the License for the specific language governing permissions and
11d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar * limitations under the License.
12d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar */
13d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar
14fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountpackage android.databinding.tool.reflection.java;
15d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar
16fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountimport android.databinding.Bindable;
17fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountimport android.databinding.tool.reflection.ModelClass;
18fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountimport android.databinding.tool.reflection.ModelField;
19fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount
2097d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyarimport java.lang.reflect.Field;
21fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mountimport java.lang.reflect.Modifier;
2297d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar
23fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mountpublic class JavaField extends ModelField {
2497d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    public final Field mField;
2597d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar
2697d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    public JavaField(Field field) {
2797d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar        mField = field;
2897d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar    }
29fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount
30fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    @Override
31fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    public boolean isBindable() {
32fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount        return mField.getAnnotation(Bindable.class) != null;
33fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    }
34fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount
35fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    @Override
36fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    public String getName() {
37fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount        return mField.getName();
38fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    }
39fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount
40fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    @Override
41fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    public boolean isPublic() {
42fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount        return Modifier.isPublic(mField.getModifiers());
43fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    }
44fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount
45fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    @Override
46fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    public boolean isStatic() {
47fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount        return Modifier.isStatic(mField.getModifiers());
48fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    }
49fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount
50fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    @Override
51fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    public boolean isFinal() {
52fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount        return Modifier.isFinal(mField.getModifiers());
53fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    }
54fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount
55fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    @Override
56fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    public ModelClass getFieldType() {
57fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount        return new JavaClass(mField.getType());
58fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    }
59d7af42b29ddf22f0068f7496c5ac6f4f34b543b6Yigit Boyar}
60