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 java.lang.reflect.AnnotatedElement
|
||||
import java.lang.reflect.Method
|
||||
import java.lang.reflect.Modifier
|
||||
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 modifiers: Int get() = klass.getModifiers()
|
||||
|
||||
override fun getInnerClasses() = klass.getDeclaredClasses()
|
||||
.stream()
|
||||
.filterNot {
|
||||
@@ -101,12 +104,6 @@ public class ReflectJavaClass(private val klass: Class<*>) : ReflectJavaElement(
|
||||
override fun isAnnotationType() = klass.isAnnotation()
|
||||
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 hashCode() = klass.hashCode()
|
||||
|
||||
+3
-8
@@ -22,25 +22,20 @@ import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import java.lang.reflect.AnnotatedElement
|
||||
import java.lang.reflect.Member
|
||||
import java.lang.reflect.Modifier
|
||||
import java.lang.reflect.Type
|
||||
import java.util.ArrayList
|
||||
|
||||
public abstract class ReflectJavaMember : ReflectJavaElement(), ReflectJavaAnnotationOwner, JavaMember {
|
||||
public abstract class ReflectJavaMember : ReflectJavaElement(), ReflectJavaAnnotationOwner, ReflectJavaModifierListOwner, JavaMember {
|
||||
protected abstract val member: Member
|
||||
|
||||
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 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(
|
||||
parameterTypes: Array<Type>,
|
||||
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
|
||||
|
||||
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.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
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
|
||||
get() = getClassLoader() ?: ClassLoader.getSystemClassLoader()
|
||||
Reference in New Issue
Block a user