Minor, move common logic to ReflectJavaModifierListOwner
This commit is contained in:
+5
-8
@@ -24,12 +24,15 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.utils.emptyOrSingletonList
|
import org.jetbrains.kotlin.utils.emptyOrSingletonList
|
||||||
import java.lang.reflect.AnnotatedElement
|
import java.lang.reflect.AnnotatedElement
|
||||||
import java.lang.reflect.Method
|
import java.lang.reflect.Method
|
||||||
import java.lang.reflect.Modifier
|
|
||||||
import java.util.Arrays
|
import java.util.Arrays
|
||||||
|
|
||||||
public class ReflectJavaClass(private val klass: Class<*>) : ReflectJavaElement(), ReflectJavaAnnotationOwner, JavaClass {
|
public class ReflectJavaClass(
|
||||||
|
private val klass: Class<*>
|
||||||
|
) : ReflectJavaElement(), ReflectJavaAnnotationOwner, ReflectJavaModifierListOwner, JavaClass {
|
||||||
override val element: AnnotatedElement get() = klass
|
override val element: AnnotatedElement get() = klass
|
||||||
|
|
||||||
|
override val modifiers: Int get() = klass.getModifiers()
|
||||||
|
|
||||||
override fun getInnerClasses() = klass.getDeclaredClasses()
|
override fun getInnerClasses() = klass.getDeclaredClasses()
|
||||||
.stream()
|
.stream()
|
||||||
.filterNot {
|
.filterNot {
|
||||||
@@ -101,12 +104,6 @@ public class ReflectJavaClass(private val klass: Class<*>) : ReflectJavaElement(
|
|||||||
override fun isAnnotationType() = klass.isAnnotation()
|
override fun isAnnotationType() = klass.isAnnotation()
|
||||||
override fun isEnum() = klass.isEnum()
|
override fun isEnum() = klass.isEnum()
|
||||||
|
|
||||||
override fun isAbstract() = Modifier.isAbstract(klass.getModifiers())
|
|
||||||
override fun isStatic() = Modifier.isStatic(klass.getModifiers())
|
|
||||||
override fun isFinal() = Modifier.isFinal(klass.getModifiers())
|
|
||||||
|
|
||||||
override fun getVisibility() = calculateVisibility(klass.getModifiers())
|
|
||||||
|
|
||||||
override fun equals(other: Any?) = other is ReflectJavaClass && klass == other.klass
|
override fun equals(other: Any?) = other is ReflectJavaClass && klass == other.klass
|
||||||
|
|
||||||
override fun hashCode() = klass.hashCode()
|
override fun hashCode() = klass.hashCode()
|
||||||
|
|||||||
+3
-8
@@ -22,25 +22,20 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.name.SpecialNames
|
import org.jetbrains.kotlin.name.SpecialNames
|
||||||
import java.lang.reflect.AnnotatedElement
|
import java.lang.reflect.AnnotatedElement
|
||||||
import java.lang.reflect.Member
|
import java.lang.reflect.Member
|
||||||
import java.lang.reflect.Modifier
|
|
||||||
import java.lang.reflect.Type
|
import java.lang.reflect.Type
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
|
|
||||||
public abstract class ReflectJavaMember : ReflectJavaElement(), ReflectJavaAnnotationOwner, JavaMember {
|
public abstract class ReflectJavaMember : ReflectJavaElement(), ReflectJavaAnnotationOwner, ReflectJavaModifierListOwner, JavaMember {
|
||||||
protected abstract val member: Member
|
protected abstract val member: Member
|
||||||
|
|
||||||
override val element: AnnotatedElement get() = member as AnnotatedElement
|
override val element: AnnotatedElement get() = member as AnnotatedElement
|
||||||
|
|
||||||
|
override val modifiers: Int get() = member.getModifiers()
|
||||||
|
|
||||||
override fun getName() = member.getName()?.let { Name.identifier(it) } ?: SpecialNames.NO_NAME_PROVIDED
|
override fun getName() = member.getName()?.let { Name.identifier(it) } ?: SpecialNames.NO_NAME_PROVIDED
|
||||||
|
|
||||||
override fun getContainingClass() = ReflectJavaClass(member.getDeclaringClass())
|
override fun getContainingClass() = ReflectJavaClass(member.getDeclaringClass())
|
||||||
|
|
||||||
override fun isAbstract() = Modifier.isAbstract(member.getModifiers())
|
|
||||||
override fun isStatic() = Modifier.isStatic(member.getModifiers())
|
|
||||||
override fun isFinal() = Modifier.isFinal(member.getModifiers())
|
|
||||||
|
|
||||||
override fun getVisibility() = calculateVisibility(member.getModifiers())
|
|
||||||
|
|
||||||
protected fun getValueParameters(
|
protected fun getValueParameters(
|
||||||
parameterTypes: Array<Type>,
|
parameterTypes: Array<Type>,
|
||||||
parameterAnnotations: Array<Array<Annotation>>,
|
parameterAnnotations: Array<Array<Annotation>>,
|
||||||
|
|||||||
+41
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2015 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* 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 org.jetbrains.kotlin.load.java.structure.reflect
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
|
import org.jetbrains.kotlin.load.java.JavaVisibilities
|
||||||
|
import org.jetbrains.kotlin.load.java.structure.JavaModifierListOwner
|
||||||
|
import java.lang.reflect.Modifier
|
||||||
|
|
||||||
|
public trait ReflectJavaModifierListOwner : JavaModifierListOwner {
|
||||||
|
/* protected // KT-3029 */ val modifiers: Int
|
||||||
|
|
||||||
|
override fun isAbstract() = Modifier.isAbstract(modifiers)
|
||||||
|
override fun isStatic() = Modifier.isStatic(modifiers)
|
||||||
|
override fun isFinal() = Modifier.isFinal(modifiers)
|
||||||
|
|
||||||
|
override fun getVisibility() = modifiers.let { modifiers ->
|
||||||
|
when {
|
||||||
|
Modifier.isPublic(modifiers) -> Visibilities.PUBLIC
|
||||||
|
Modifier.isPrivate(modifiers) -> Visibilities.PRIVATE
|
||||||
|
Modifier.isProtected(modifiers) ->
|
||||||
|
if (Modifier.isStatic(modifiers)) JavaVisibilities.PROTECTED_STATIC_VISIBILITY
|
||||||
|
else JavaVisibilities.PROTECTED_AND_PACKAGE
|
||||||
|
else -> JavaVisibilities.PACKAGE_VISIBILITY
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
-14
@@ -16,24 +16,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.load.java.structure.reflect
|
package org.jetbrains.kotlin.load.java.structure.reflect
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
|
||||||
import org.jetbrains.kotlin.descriptors.Visibility
|
|
||||||
import org.jetbrains.kotlin.load.java.JavaVisibilities
|
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import java.lang.reflect.Array
|
import java.lang.reflect.Array
|
||||||
import java.lang.reflect.Modifier
|
|
||||||
|
|
||||||
private fun calculateVisibility(modifiers: Int): Visibility {
|
|
||||||
return when {
|
|
||||||
Modifier.isPublic(modifiers) -> Visibilities.PUBLIC
|
|
||||||
Modifier.isPrivate(modifiers) -> Visibilities.PRIVATE
|
|
||||||
Modifier.isProtected(modifiers) ->
|
|
||||||
if (Modifier.isStatic(modifiers)) JavaVisibilities.PROTECTED_STATIC_VISIBILITY else JavaVisibilities.PROTECTED_AND_PACKAGE
|
|
||||||
else -> JavaVisibilities.PACKAGE_VISIBILITY
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public val Class<*>.classLoader: ClassLoader
|
public val Class<*>.classLoader: ClassLoader
|
||||||
get() = getClassLoader() ?: ClassLoader.getSystemClassLoader()
|
get() = getClassLoader() ?: ClassLoader.getSystemClassLoader()
|
||||||
Reference in New Issue
Block a user