jps model: additional logging for loading from eclipse

This commit is contained in:
nik
2012-11-06 21:09:01 +04:00
parent cf18d71786
commit 0700e05b8c
12 changed files with 85 additions and 3 deletions
@@ -22,4 +22,9 @@ public class JpsJavaSdkType extends JpsSdkType<JpsDummyElement> implements JpsEl
public static String getJavaExecutable(JpsSdk<?> sdk) {
return sdk.getHomePath() + "/bin/java";
}
@Override
public String toString() {
return "java sdk type";
}
}
@@ -23,4 +23,9 @@ public class JpsGlobalElementReference extends JpsElementReferenceBase<JpsGlobal
@Override
public void applyChanges(@NotNull JpsGlobalElementReference modified) {
}
@Override
public String toString() {
return "global ref";
}
}
@@ -23,4 +23,9 @@ public class JpsProjectElementReference extends JpsElementReferenceBase<JpsProje
@Override
public void applyChanges(@NotNull JpsProjectElementReference modified) {
}
@Override
public String toString() {
return "project ref";
}
}
@@ -37,4 +37,9 @@ public class JpsLibraryReferenceImpl extends JpsNamedElementReferenceImpl<JpsLib
model.registerExternalReference(this);
return this;
}
@Override
public String toString() {
return "lib ref: '" + myElementName + "' in " + getParentReference();
}
}
@@ -39,4 +39,9 @@ public class JpsLibraryDependencyImpl extends JpsDependencyElementBase<JpsLibrar
public JpsLibraryDependencyImpl createCopy() {
return new JpsLibraryDependencyImpl(this);
}
@Override
public String toString() {
return "lib dep [" + getLibraryReference() + "]";
}
}
@@ -47,4 +47,9 @@ public class JpsModuleDependencyImpl extends JpsDependencyElementBase<JpsModuleD
public JpsModuleDependencyImpl createCopy() {
return new JpsModuleDependencyImpl(this);
}
@Override
public String toString() {
return "module dep [" + getModuleReference() + "]";
}
}
@@ -32,4 +32,9 @@ public class JpsModuleReferenceImpl extends JpsNamedElementReferenceImpl<JpsModu
model.registerExternalReference(this);
return this;
}
@Override
public String toString() {
return "module ref: '" + myElementName + "' in " + getParentReference();
}
}
@@ -21,4 +21,9 @@ public class JpsModuleSourceDependencyImpl extends JpsDependencyElementBase<JpsM
public JpsModuleSourceDependencyImpl createCopy() {
return new JpsModuleSourceDependencyImpl(this);
}
@Override
public String toString() {
return "module source dep";
}
}
@@ -52,4 +52,9 @@ public class JpsSdkDependencyImpl extends JpsDependencyElementBase<JpsSdkDepende
public boolean isInherited() {
return false;
}
@Override
public String toString() {
return "sdk dep [" + mySdkType + "]";
}
}
@@ -1,5 +1,6 @@
package org.jetbrains.jps.model.serialization.library;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.JDOMUtil;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
@@ -17,6 +18,7 @@ import org.jetbrains.jps.model.library.sdk.JpsSdkReference;
import org.jetbrains.jps.model.module.JpsSdkReferencesTable;
import org.jetbrains.jps.model.serialization.JpsModelSerializerExtension;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -26,6 +28,8 @@ import java.util.List;
* @author nik
*/
public class JpsSdkTableSerializer {
private static final Logger LOG = Logger.getInstance(JpsSdkTableSerializer.class);
private static final JpsLibraryRootTypeSerializer[] PREDEFINED_ROOT_TYPE_SERIALIZERS = {
new JpsLibraryRootTypeSerializer("classPath", JpsOrderRootType.COMPILED, true),
new JpsLibraryRootTypeSerializer("sourcePath", JpsOrderRootType.SOURCES, true)
@@ -76,6 +80,7 @@ public class JpsSdkTableSerializer {
private static JpsLibrary loadSdk(Element sdkElement) {
String name = getAttributeValue(sdkElement, NAME_TAG);
String typeId = getAttributeValue(sdkElement, TYPE_TAG);
LOG.debug("Loading " + typeId + " SDK '" + name + "'");
JpsSdkPropertiesSerializer<?> serializer = getSdkPropertiesSerializer(typeId);
final JpsLibrary library = createSdk(name, serializer, sdkElement);
final Element roots = sdkElement.getChild(ROOTS_TAG);
@@ -86,6 +91,16 @@ public class JpsSdkTableSerializer {
loadRoots(rootElement, library, rootTypeSerializer.getType());
}
}
else {
LOG.info("root type serializer not found for " + rootTypeElement.getName());
}
}
if (LOG.isDebugEnabled()) {
List<File> files = library.getFiles(JpsOrderRootType.COMPILED);
LOG.debug(name + " SDK classpath (" + files.size() + " roots):");
for (File file : files) {
LOG.debug(" " + file.getAbsolutePath());
}
}
return library;
}
@@ -16,6 +16,7 @@
package org.jetbrains.jps.eclipse.model;
import com.intellij.openapi.components.ExpandMacroToPathMap;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.containers.HashSet;
@@ -44,6 +45,7 @@ import java.util.Set;
* Date: 10/29/12
*/
class JpsEclipseClasspathReader extends AbstractEclipseClasspathReader<JpsModule> {
private static final Logger LOG = Logger.getInstance(JpsEclipseClasspathReader.class);
public JpsEclipseClasspathReader(String rootPath, @Nullable List<String> currentRoots, @Nullable Set<String> moduleNames) {
super(rootPath, currentRoots, moduleNames);
@@ -66,8 +68,12 @@ class JpsEclipseClasspathReader extends AbstractEclipseClasspathReader<JpsModule
boolean exported,
String name,
boolean applicationLevel) {
if (LOG.isDebugEnabled()) {
LOG.debug("loading " + rootModel.getName() + ": adding " + (applicationLevel ? "application" : "project") + " library '" + name + "'");
}
JpsElementFactory factory = JpsElementFactory.getInstance();
JpsLibraryReference libraryReference = factory.createLibraryReference(name, applicationLevel ? factory.createGlobalReference() : factory.createProjectReference());
JpsLibraryReference libraryReference =
factory.createLibraryReference(name, applicationLevel ? factory.createGlobalReference() : factory.createProjectReference());
final JpsLibraryDependency dependency = rootModel.getDependenciesList().addLibraryDependency(libraryReference);
setLibraryEntryExported(dependency, exported);
}
@@ -86,6 +92,9 @@ class JpsEclipseClasspathReader extends AbstractEclipseClasspathReader<JpsModule
Collection<String> unknownJdks,
EclipseModuleManager eclipseModuleManager,
String jdkName) {
if (LOG.isDebugEnabled()) {
LOG.debug("loading " + rootModel.getName() + ": set module jdk " + jdkName);
}
final JpsDependenciesList dependenciesList = rootModel.getDependenciesList();
dependenciesList.addSdkDependency(JpsJavaSdkType.INSTANCE);
if (jdkName != null) {
@@ -154,6 +163,7 @@ class JpsEclipseClasspathReader extends AbstractEclipseClasspathReader<JpsModule
else {
url = expandEclipsePath2Url(rootModel, url);
}
LOG.debug("loading " + rootModel.getName() + ": adding module library " + libName + ": " + url);
jpsLibrary.addRoot(url, JpsOrderRootType.COMPILED);
setLibraryEntryExported(dependency, exported);
@@ -194,6 +204,7 @@ class JpsEclipseClasspathReader extends AbstractEclipseClasspathReader<JpsModule
public void readClasspath(JpsModule model,
final String testPattern,
Element classpathElement, JpsMacroExpander expander) throws IOException {
LOG.debug("start loading classpath for " + model.getName());
for (Object o : classpathElement.getChildren(EclipseXml.CLASSPATHENTRY_TAG)) {
try {
readClasspathEntry(model, new ArrayList<String>(), new ArrayList<String>(), new HashSet<String>(), new HashSet<String>(),
@@ -204,14 +215,22 @@ class JpsEclipseClasspathReader extends AbstractEclipseClasspathReader<JpsModule
}
}
boolean foundSdkDependency = false;
for (JpsDependencyElement element : model.getDependenciesList().getDependencies()) {
JpsDependenciesList dependenciesList = model.getDependenciesList();
for (JpsDependencyElement element : dependenciesList.getDependencies()) {
if (element instanceof JpsSdkDependency) {
foundSdkDependency = true;
break;
}
}
if (!foundSdkDependency) {
model.getDependenciesList().addSdkDependency(JpsJavaSdkType.INSTANCE);
dependenciesList.addSdkDependency(JpsJavaSdkType.INSTANCE);
}
if (LOG.isDebugEnabled()) {
String name = model.getName();
LOG.debug("finished loading classpath for " + name + " (" + dependenciesList.getDependencies().size() + " items):");
for (JpsDependencyElement element : dependenciesList.getDependencies()) {
LOG.debug(" [" + name + "]:" + element.toString());
}
}
}
@@ -1,5 +1,6 @@
package org.jetbrains.jps.eclipse.model;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.JDOMUtil;
import com.intellij.util.containers.HashSet;
import org.jdom.Document;
@@ -20,6 +21,7 @@ import java.util.List;
*/
public class JpsEclipseClasspathSerializer extends JpsModuleClasspathSerializer {
@NonNls public static final String CLASSPATH_STORAGE_ID = "eclipse";
private static final Logger LOG = Logger.getInstance(JpsEclipseClasspathSerializer.class);
public JpsEclipseClasspathSerializer() {
super(CLASSPATH_STORAGE_ID);
@@ -38,6 +40,7 @@ public class JpsEclipseClasspathSerializer extends JpsModuleClasspathSerializer
reader.readClasspath(module, null, document.getRootElement(), expander);//todo
}
catch (Exception e) {
LOG.info(e);
throw new RuntimeException(e);
}
}