Do not pass resource manager to AndroidXmlVisitor and AndroidXmlHandler
This commit is contained in:
+1
-4
@@ -20,10 +20,7 @@ import org.xml.sax.helpers.DefaultHandler
|
|||||||
import org.xml.sax.Attributes
|
import org.xml.sax.Attributes
|
||||||
import java.util.HashMap
|
import java.util.HashMap
|
||||||
|
|
||||||
class AndroidXmlHandler(
|
class AndroidXmlHandler(private val elementCallback: (String, String) -> Unit) : DefaultHandler() {
|
||||||
private val resourceManager: AndroidResourceManager,
|
|
||||||
private val elementCallback: (String, String) -> Unit
|
|
||||||
) : DefaultHandler() {
|
|
||||||
|
|
||||||
override fun startDocument() {
|
override fun startDocument() {
|
||||||
super<DefaultHandler>.startDocument()
|
super<DefaultHandler>.startDocument()
|
||||||
|
|||||||
+1
-1
@@ -40,7 +40,7 @@ public class CliAndroidUIXmlProcessor(
|
|||||||
|
|
||||||
override fun parseSingleFile(file: PsiFile): Collection<AndroidWidget> {
|
override fun parseSingleFile(file: PsiFile): Collection<AndroidWidget> {
|
||||||
val widgets: MutableCollection<AndroidWidget> = ArrayList()
|
val widgets: MutableCollection<AndroidWidget> = ArrayList()
|
||||||
val handler = AndroidXmlHandler(resourceManager, { id, clazz -> widgets.add(AndroidWidget(id, clazz)) })
|
val handler = AndroidXmlHandler { id, clazz -> widgets.add(AndroidWidget(id, clazz)) }
|
||||||
|
|
||||||
try {
|
try {
|
||||||
val inputStream = ByteArrayInputStream(file.getVirtualFile().contentsToByteArray())
|
val inputStream = ByteArrayInputStream(file.getVirtualFile().contentsToByteArray())
|
||||||
|
|||||||
+5
-6
@@ -26,10 +26,7 @@ import org.jetbrains.kotlin.lang.resolve.android.AndroidConst
|
|||||||
import org.jetbrains.kotlin.lang.resolve.android
|
import org.jetbrains.kotlin.lang.resolve.android
|
||||||
import org.jetbrains.kotlin.lang.resolve.android.idToName
|
import org.jetbrains.kotlin.lang.resolve.android.idToName
|
||||||
|
|
||||||
class AndroidXmlVisitor(
|
class AndroidXmlVisitor(val elementCallback: (String, String, XmlAttribute) -> Unit) : XmlElementVisitor() {
|
||||||
val resourceManager: AndroidResourceManager,
|
|
||||||
val elementCallback: (String, String, XmlAttribute) -> Unit
|
|
||||||
) : XmlElementVisitor() {
|
|
||||||
|
|
||||||
override fun visitElement(element: PsiElement) {
|
override fun visitElement(element: PsiElement) {
|
||||||
element.acceptChildren(this)
|
element.acceptChildren(this)
|
||||||
@@ -45,8 +42,10 @@ class AndroidXmlVisitor(
|
|||||||
val attributeValue = attribute.getValue()
|
val attributeValue = attribute.getValue()
|
||||||
if (attributeValue != null) {
|
if (attributeValue != null) {
|
||||||
val classNameAttr = tag?.getAttribute(AndroidConst.CLASS_ATTRIBUTE_NO_NAMESPACE)?.getValue() ?: tag?.getLocalName()
|
val classNameAttr = tag?.getAttribute(AndroidConst.CLASS_ATTRIBUTE_NO_NAMESPACE)?.getValue() ?: tag?.getLocalName()
|
||||||
val name = idToName(attributeValue)
|
if (classNameAttr != null) {
|
||||||
if (name != null) elementCallback(name, classNameAttr!!, attribute)
|
val name = idToName(attributeValue)
|
||||||
|
if (name != null) elementCallback(name, classNameAttr!!, attribute)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tag?.acceptChildren(this)
|
tag?.acceptChildren(this)
|
||||||
|
|||||||
+1
-1
@@ -31,7 +31,7 @@ public class IDEAndroidResourceManager(val module: Module) : AndroidResourceMana
|
|||||||
override fun idToXmlAttribute(id: String): PsiElement? {
|
override fun idToXmlAttribute(id: String): PsiElement? {
|
||||||
var ret: PsiElement? = null
|
var ret: PsiElement? = null
|
||||||
for (file in getLayoutXmlFiles()) {
|
for (file in getLayoutXmlFiles()) {
|
||||||
file.accept(AndroidXmlVisitor(this, { retId, wClass, valueElement ->
|
file.accept(AndroidXmlVisitor({ retId, wClass, valueElement ->
|
||||||
if (retId == id) ret = valueElement
|
if (retId == id) ret = valueElement
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -35,7 +35,7 @@ class IDEAndroidUIXmlProcessor(val module: Module) : AndroidUIXmlProcessor(modul
|
|||||||
|
|
||||||
override fun parseSingleFile(file: PsiFile): List<AndroidWidget> {
|
override fun parseSingleFile(file: PsiFile): List<AndroidWidget> {
|
||||||
val widgets = arrayListOf<AndroidWidget>()
|
val widgets = arrayListOf<AndroidWidget>()
|
||||||
file.accept(AndroidXmlVisitor(resourceManager, { id, wClass, valueElement ->
|
file.accept(AndroidXmlVisitor({ id, wClass, valueElement ->
|
||||||
widgets.add(AndroidWidget(id, wClass))
|
widgets.add(AndroidWidget(id, wClass))
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user