Add prefix information for Java source root (KT-9167 in progress)

#KT-9167 In Progress
This commit is contained in:
Nikolay Krasko
2015-11-08 19:54:46 +03:00
committed by Nikolay Krasko
parent 77138ecdb7
commit c0739ef53c
12 changed files with 99 additions and 32 deletions
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.cli.common.modules
import org.jetbrains.kotlin.modules.Module
import org.jetbrains.kotlin.modules.JavaRootPath
import java.util.*
public class ModuleBuilder(
@@ -26,7 +27,7 @@ public class ModuleBuilder(
) : Module {
private val sourceFiles = ArrayList<String>()
private val classpathRoots = ArrayList<String>()
private val javaSourceRoots = ArrayList<String>()
private val javaSourceRoots = ArrayList<JavaRootPath>()
public fun addSourceFiles(pattern: String) {
sourceFiles.add(pattern)
@@ -36,12 +37,12 @@ public class ModuleBuilder(
classpathRoots.add(name)
}
public fun addJavaSourceRoot(name: String) {
javaSourceRoots.add(name)
public fun addJavaSourceRoot(rootPath: JavaRootPath) {
javaSourceRoots.add(rootPath)
}
override fun getOutputDirectory(): String = outputDir
override fun getJavaSourceRoots(): List<String> = javaSourceRoots
override fun getJavaSourceRoots(): List<JavaRootPath> = javaSourceRoots
override fun getSourceFiles(): List<String> = sourceFiles
override fun getClasspathRoots(): List<String> = classpathRoots
override fun getModuleName(): String = name
@@ -19,9 +19,11 @@ package org.jetbrains.kotlin.cli.common.modules;
import com.intellij.openapi.util.io.StreamUtil;
import com.intellij.util.SmartList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.cli.common.messages.MessageCollector;
import org.jetbrains.kotlin.cli.common.messages.MessageCollectorUtil;
import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil;
import org.jetbrains.kotlin.modules.JavaRootPath;
import org.jetbrains.kotlin.modules.Module;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
@@ -47,6 +49,7 @@ public class ModuleXmlParser {
public static final String OUTPUT_DIR = "outputDir";
public static final String SOURCES = "sources";
public static final String JAVA_SOURCE_ROOTS = "javaSourceRoots";
public static final String JAVA_SOURCE_PACKAGE_PREFIX = "packagePrefix";
public static final String PATH = "path";
public static final String CLASSPATH = "classpath";
@@ -165,7 +168,8 @@ public class ModuleXmlParser {
}
else if (JAVA_SOURCE_ROOTS.equalsIgnoreCase(qName)) {
String path = getAttribute(attributes, PATH, qName);
moduleBuilder.addJavaSourceRoot(path);
String packagePrefix = getNullableAttribute(attributes, JAVA_SOURCE_PACKAGE_PREFIX);
moduleBuilder.addJavaSourceRoot(new JavaRootPath(path, packagePrefix));
}
else {
throw createError(qName);
@@ -189,6 +193,12 @@ public class ModuleXmlParser {
return name;
}
@Nullable
private static String getNullableAttribute(Attributes attributes, String qName) throws SAXException {
return attributes.getValue(qName);
}
private static SAXException createError(String qName) throws SAXException {
return new SAXException("Unexpected tag: " + qName);
}