jps model: base classes for JPS elements moved to 'jps-model-api', unnecessary dependencies on 'jps-model-impl' removed

This commit is contained in:
nik
2012-10-03 09:43:53 +04:00
parent d80b67e83e
commit 612761e757
104 changed files with 371 additions and 247 deletions
+1
View File
@@ -26,6 +26,7 @@
<orderEntry type="library" name="Netty" level="project" />
<orderEntry type="module" module-name="testFramework-java" scope="TEST" />
<orderEntry type="library" name="Jasper2.1" level="project" />
<orderEntry type="module" module-name="jps-model-impl" />
</component>
<component name="copyright">
<Base>
@@ -33,7 +33,7 @@ import com.intellij.util.ui.UIUtil;
import gnu.trove.THashSet;
import junit.framework.Assert;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import java.io.File;
import java.io.IOException;
+1
View File
@@ -31,6 +31,7 @@
<orderEntry type="module" module-name="RegExpSupport" />
<orderEntry type="module" module-name="java-indexing-impl" exported="" />
<orderEntry type="module" module-name="java-indexing-api" />
<orderEntry type="module" module-name="jps-model-impl" />
</component>
<component name="copyright">
<Base>
@@ -15,6 +15,7 @@ import org.jetbrains.jps.model.module.JpsDependencyElement;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsModuleSourceRoot;
import org.jetbrains.jps.model.module.JpsSdkDependency;
import org.jetbrains.jps.util.JpsPathUtil;
import java.io.File;
import java.util.*;
@@ -2,6 +2,7 @@ package org.jetbrains.jps.builders.impl;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.io.FileUtilRt;
import com.intellij.util.SmartList;
import com.intellij.util.containers.ConcurrentHashMap;
import gnu.trove.THashMap;
@@ -172,7 +173,7 @@ public class BuildRootIndexImpl implements BuildRootIndex {
if (!descriptors.isEmpty()) {
return descriptors.get(0);
}
current = FileUtil.getParentFile(current);
current = FileUtilRt.getParentFile(current);
}
return null;
}
@@ -197,7 +198,7 @@ public class BuildRootIndexImpl implements BuildRootIndex {
result.addAll(descriptors);
}
}
current = FileUtil.getParentFile(current);
current = FileUtilRt.getParentFile(current);
}
return result != null ? result : Collections.<R>emptyList();
}
@@ -1,11 +1,12 @@
package org.jetbrains.jps.incremental;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.io.FileUtilRt;
import com.intellij.util.containers.ContainerUtil;
import gnu.trove.THashMap;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.builders.BuildRootIndex;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
@@ -59,7 +60,7 @@ public class CompilerEncodingConfiguration {
map.put(module, set);
final File sourceRoot = rootDescriptor.root;
File current = FileUtil.getParentFile(file);
File current = FileUtilRt.getParentFile(file);
String parentCharset = null;
while (current != null) {
final String currentCharset = myUrlToCharset.get(FileUtil.toSystemIndependentName(current.getAbsolutePath()));
@@ -69,7 +70,7 @@ public class CompilerEncodingConfiguration {
if (FileUtil.filesEqual(current, sourceRoot)) {
break;
}
current = FileUtil.getParentFile(current);
current = FileUtilRt.getParentFile(current);
}
if (parentCharset != null) {
set.add(parentCharset);
@@ -5,7 +5,7 @@ import com.intellij.openapi.util.io.FileSystemUtil;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.builders.BuildTarget;
import org.jetbrains.jps.builders.FileProcessor;
@@ -14,7 +14,7 @@ import com.intellij.util.io.PersistentEnumerator;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.ProjectPaths;
import org.jetbrains.jps.api.CanceledStatus;
@@ -3,7 +3,7 @@ package org.jetbrains.jps.incremental;
import com.intellij.util.Consumer;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.builders.BuildRootIndex;
import org.jetbrains.jps.builders.BuildTarget;
import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType;
@@ -4,7 +4,7 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.containers.ClassMap;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.incremental.artifacts.instructions.ArtifactCompilerInstructionCreator;
import org.jetbrains.jps.incremental.artifacts.instructions.ArtifactInstructionsBuilderContext;
import org.jetbrains.jps.incremental.artifacts.instructions.CopyToDirectoryInstructionCreator;
@@ -31,7 +31,6 @@ import gnu.trove.THashSet;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.builders.storage.SourceToOutputMapping;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.incremental.ProjectBuildException;
@@ -209,7 +208,7 @@ public class JarsBuilder {
if (!JarFile.MANIFEST_NAME.startsWith(rootPath)) {
continue;
}
final String manifestPath = JpsPathUtil.trimForwardSlashes(JarFile.MANIFEST_NAME.substring(rootPath.length()));
final String manifestPath = JpsArtifactPathUtil.trimForwardSlashes(JarFile.MANIFEST_NAME.substring(rootPath.length()));
final ArtifactRootDescriptor descriptor = (ArtifactRootDescriptor)pair.getSecond();
if (descriptor instanceof FileBasedArtifactRootDescriptor) {
final File manifestFile = new File(descriptor.getRootFile(), manifestPath);
@@ -265,7 +264,8 @@ public class JarsBuilder {
root.processEntries(new JarBasedArtifactRootDescriptor.EntryProcessor() {
@Override
public void process(@Nullable InputStream inputStream, @NotNull String relativePath) throws IOException {
String pathInJar = addParentDirectories(jarOutputStream, writtenPaths, JpsPathUtil.appendToPath(relativeOutputPath, relativePath));
String pathInJar = addParentDirectories(jarOutputStream, writtenPaths, JpsArtifactPathUtil
.appendToPath(relativeOutputPath, relativePath));
if (inputStream == null) {
addDirectoryEntry(jarOutputStream, pathInJar + "/", writtenPaths);
@@ -0,0 +1,37 @@
package org.jetbrains.jps.incremental.artifacts.impl;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.util.text.StringUtilRt;
import org.jetbrains.annotations.NotNull;
import java.io.File;
/**
* @author nik
*/
public class JpsArtifactPathUtil {
//todo[nik] copied from DeploymentUtil
public static String trimForwardSlashes(@NotNull String path) {
while (path.length() != 0 && (path.charAt(0) == '/' || path.charAt(0) == File.separatorChar)) {
path = path.substring(1);
}
return path;
}
//todo[nik] copied from DeploymentUtil
public static String appendToPath(@NotNull String basePath, @NotNull String relativePath) {
final boolean endsWithSlash = StringUtilRt.endsWithChar(basePath, '/') || StringUtilRt.endsWithChar(basePath, '\\');
final boolean startsWithSlash = StringUtil.startsWithChar(relativePath, '/') || StringUtil.startsWithChar(relativePath, '\\');
String tail;
if (endsWithSlash && startsWithSlash) {
tail = trimForwardSlashes(relativePath);
}
else if (!endsWithSlash && !startsWithSlash && basePath.length() > 0 && relativePath.length() > 0) {
tail = "/" + relativePath;
}
else {
tail = relativePath;
}
return basePath + tail;
}
}
@@ -7,8 +7,8 @@ import org.jetbrains.jps.model.JpsElementCollection;
import org.jetbrains.jps.model.JpsModel;
import org.jetbrains.jps.model.artifact.JpsArtifact;
import org.jetbrains.jps.model.artifact.JpsArtifactService;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.impl.JpsElementCollectionRole;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementCollectionRole;
import org.jetbrains.jps.service.JpsServiceManager;
import java.util.ArrayList;
@@ -2,11 +2,11 @@ package org.jetbrains.jps.incremental.artifacts.instructions;
import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.builders.storage.SourceToOutputMapping;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.incremental.artifacts.ArtifactBuildTarget;
import org.jetbrains.jps.incremental.artifacts.ArtifactOutputToSourceMapping;
import org.jetbrains.jps.incremental.artifacts.impl.JpsArtifactPathUtil;
import java.io.File;
import java.io.IOException;
@@ -38,7 +38,7 @@ public class FileBasedArtifactRootDescriptor extends ArtifactRootDescriptor {
String targetPath;
if (!FileUtil.filesEqual(file, getRootFile())) {
final String relativePath = FileUtil.getRelativePath(FileUtil.toSystemIndependentName(getRootFile().getPath()), filePath, '/');
targetPath = JpsPathUtil.appendToPath(outputPath, relativePath);
targetPath = JpsArtifactPathUtil.appendToPath(outputPath, relativePath);
}
else {
targetPath = outputPath;
@@ -4,12 +4,12 @@ import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.builders.storage.SourceToOutputMapping;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.incremental.artifacts.ArtifactBuildTarget;
import org.jetbrains.jps.incremental.artifacts.ArtifactOutputToSourceMapping;
import org.jetbrains.jps.incremental.artifacts.JarPathUtil;
import org.jetbrains.jps.incremental.artifacts.impl.JpsArtifactPathUtil;
import java.io.*;
import java.util.Collections;
@@ -70,7 +70,7 @@ public class JarBasedArtifactRootDescriptor extends ArtifactRootDescriptor {
processEntries(new EntryProcessor() {
@Override
public void process(@Nullable InputStream inputStream, @NotNull String relativePath) throws IOException {
final String fullOutputPath = FileUtil.toSystemDependentName(JpsPathUtil.appendToPath(outputPath, relativePath));
final String fullOutputPath = FileUtil.toSystemDependentName(JpsArtifactPathUtil.appendToPath(outputPath, relativePath));
final File outputFile = new File(fullOutputPath);
FileUtil.createParentDirs(outputFile);
@@ -16,6 +16,7 @@
package org.jetbrains.jps.incremental.java;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.io.FileUtilRt;
import org.jetbrains.annotations.NonNls;
import java.io.File;
@@ -34,7 +35,7 @@ public final class CopyResourcesUtil {
final File file = new File(targetDir, className + ".class");
FileUtil.createParentDirs(file);
if (deleteOnExit) {
for (File f = file; f != null && !FileUtil.filesEqual(f, targetDir); f = FileUtil.getParentFile(f)) {
for (File f = file; f != null && !FileUtil.filesEqual(f, targetDir); f = FileUtilRt.getParentFile(f)) {
f.deleteOnExit();
}
}
@@ -66,7 +67,7 @@ public final class CopyResourcesUtil {
final File targetDir = new File(targetPath).getAbsoluteFile();
final File file = new File(targetDir, fileName);
FileUtil.createParentDirs(file);
for (File f = file; f != null && !FileUtil.filesEqual(f, targetDir); f = FileUtil.getParentFile(f)) {
for (File f = file; f != null && !FileUtil.filesEqual(f, targetDir); f = FileUtilRt.getParentFile(f)) {
f.deleteOnExit();
}
final String resourceName = "/" + fileName;
@@ -4,7 +4,7 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.builders.DirtyFilesHolder;
import org.jetbrains.jps.builders.FileProcessor;
@@ -1,6 +1,6 @@
package org.jetbrains.jps.indices.impl;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.indices.ModuleExcludeIndex;
import org.jetbrains.jps.model.JpsModel;
import org.jetbrains.jps.model.module.JpsModule;
@@ -1,6 +1,6 @@
package org.jetbrains.jps.javac;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.io.FileUtilRt;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.incremental.Utils;
@@ -159,14 +159,14 @@ class JavacFileManager extends ForwardingJavaFileManager<StandardJavaFileManager
}
private File findOutputDir(File src) {
File file = FileUtil.getParentFile(src);
File file = FileUtilRt.getParentFile(src);
while (file != null) {
for (Map.Entry<File, Set<File>> entry : myOutputsMap.entrySet()) {
if (entry.getValue().contains(file)) {
return entry.getKey();
}
}
file = FileUtil.getParentFile(file);
file = FileUtilRt.getParentFile(file);
}
return null;
}
@@ -19,7 +19,7 @@ import com.intellij.openapi.application.ex.PathManagerEx;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.Processor;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.builders.BuildResult;
import org.jetbrains.jps.builders.BuildTarget;
import org.jetbrains.jps.builders.JpsBuildTestCase;
@@ -6,7 +6,7 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.testFramework.UsefulTestCase;
import com.intellij.util.io.TestFileSystemBuilder;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.api.CanceledStatus;
import org.jetbrains.jps.builders.impl.BuildRootIndexImpl;
import org.jetbrains.jps.builders.impl.BuildTargetIndexImpl;
@@ -2,7 +2,7 @@ package org.jetbrains.jps.builders.rebuild
import com.intellij.openapi.application.ex.PathManagerEx
import com.intellij.openapi.util.io.FileUtil
import com.intellij.util.io.TestFileSystemBuilder
import org.jetbrains.jps.JpsPathUtil
import org.jetbrains.jps.util.JpsPathUtil
import org.jetbrains.jps.builders.JpsBuildTestCase
import org.jetbrains.jps.model.java.JpsJavaExtensionService
/**
@@ -2,7 +2,7 @@ package org.jetbrains.jps.incremental.artifacts;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.PathUtil;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.model.artifact.JpsArtifact;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.module.JpsModule;
@@ -19,7 +19,7 @@ import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.io.TestFileSystemBuilder;
import com.intellij.util.text.UniqueNameGenerator;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.builders.BuildResult;
import org.jetbrains.jps.builders.BuildTarget;
import org.jetbrains.jps.builders.JpsBuildTestCase;
@@ -1,7 +1,7 @@
package org.jetbrains.jps.model.artifact.impl.elements;
package org.jetbrains.jps.model.artifact.elements.ex;
import org.jetbrains.jps.model.artifact.elements.JpsComplexPackagingElement;
import org.jetbrains.jps.model.impl.JpsCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
/**
* @author nik
@@ -1,20 +1,21 @@
package org.jetbrains.jps.model.impl;
package org.jetbrains.jps.model.ex;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.JpsCompositeElement;
import org.jetbrains.jps.model.JpsElementContainer;
/**
* @author nik
*/
public abstract class JpsCompositeElementBase<Self extends JpsCompositeElementBase<Self>> extends JpsElementBase<Self> implements JpsCompositeElement {
protected final JpsElementContainerImpl myContainer;
protected final JpsElementContainerEx myContainer;
protected JpsCompositeElementBase() {
myContainer = new JpsElementContainerImpl(this);
myContainer = JpsExElementFactory.getInstance().createContainer(this);
}
protected JpsCompositeElementBase(JpsCompositeElementBase<Self> original) {
myContainer = new JpsElementContainerImpl(original.myContainer, this);
myContainer = JpsExElementFactory.getInstance().createContainerCopy(original.myContainer, this);
}
public void applyChanges(@NotNull Self modified) {
@@ -23,7 +24,7 @@ public abstract class JpsCompositeElementBase<Self extends JpsCompositeElementBa
@Override
@NotNull
public JpsElementContainerImpl getContainer() {
public JpsElementContainer getContainer() {
return myContainer;
}
}
@@ -1,15 +1,15 @@
package org.jetbrains.jps.model.impl;
package org.jetbrains.jps.model.ex;
import com.intellij.openapi.diagnostic.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsEventDispatcher;
import org.jetbrains.jps.model.JpsModel;
/**
* @author nik
*/
public abstract class JpsElementBase<Self extends JpsElementBase<Self>> implements JpsElement, JpsElement.BulkModificationSupport<Self> {
private static final Logger LOG = Logger.getInstance("#org.jetbrains.jps.model.impl.JpsElementBase");
protected JpsElementBase myParent;
protected JpsElementBase() {
@@ -17,7 +17,7 @@ public abstract class JpsElementBase<Self extends JpsElementBase<Self>> implemen
public void setParent(@Nullable JpsElementBase<?> parent) {
if (myParent != null && parent != null) {
LOG.error("Parent for " + this + " is already set");
throw new AssertionError("Parent for " + this + " is already set: " + myParent);
}
myParent = parent;
}
@@ -1,4 +1,4 @@
package org.jetbrains.jps.model.impl;
package org.jetbrains.jps.model.ex;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementChildRole;
@@ -1,4 +1,4 @@
package org.jetbrains.jps.model.impl;
package org.jetbrains.jps.model.ex;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.*;
@@ -18,7 +18,7 @@ public class JpsElementCollectionRole<E extends JpsElement> extends JpsElementCh
@NotNull
@Override
public JpsElementCollection<E> create() {
return new JpsElementCollectionImpl<E>(myChildRole);
return JpsExElementFactory.getInstance().createCollection(myChildRole);
}
@Override
@@ -0,0 +1,16 @@
package org.jetbrains.jps.model.ex;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementChildRole;
import org.jetbrains.jps.model.JpsElementContainer;
import java.util.Map;
/**
* @author nik
*/
public abstract class JpsElementContainerEx implements JpsElementContainer {
protected abstract Map<JpsElementChildRole<?>, JpsElement> getElementsMap();
protected abstract void applyChanges(JpsElementContainerEx modified);
}
@@ -1,4 +1,4 @@
package org.jetbrains.jps.model.impl;
package org.jetbrains.jps.model.ex;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElement;
@@ -8,7 +8,8 @@ import org.jetbrains.jps.model.JpsModel;
/**
* @author nik
*/
public abstract class JpsElementReferenceBase<E extends JpsElementReferenceBase<E, T>, T extends JpsElement> extends JpsElementBase<E> implements JpsElementReference<T> {
public abstract class JpsElementReferenceBase<E extends JpsElementReferenceBase<E, T>, T extends JpsElement> extends JpsElementBase<E>
implements JpsElementReference<T> {
@Override
public JpsElementReference<T> asExternal(@NotNull JpsModel model) {
model.registerExternalReference(this);
@@ -0,0 +1,27 @@
package org.jetbrains.jps.model.ex;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementChildRole;
import org.jetbrains.jps.model.JpsElementCollection;
import org.jetbrains.jps.service.JpsServiceManager;
/**
* @author nik
*/
public abstract class JpsExElementFactory {
public static JpsExElementFactory getInstance() {
return InstanceHolder.INSTANCE;
}
public abstract <E extends JpsElement> JpsElementCollection<E> createCollection(JpsElementChildRole<E> role);
public abstract JpsElementContainerEx createContainer(@NotNull JpsCompositeElementBase<?> parent);
public abstract JpsElementContainerEx createContainerCopy(@NotNull JpsElementContainerEx original,
@NotNull JpsCompositeElementBase<?> parent);
private static final class InstanceHolder {
private static final JpsExElementFactory INSTANCE = JpsServiceManager.getInstance().getService(JpsExElementFactory.class);
}
}
@@ -1,4 +1,4 @@
package org.jetbrains.jps.model.impl;
package org.jetbrains.jps.model.ex;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.*;
@@ -6,7 +6,8 @@ import org.jetbrains.jps.model.*;
/**
* @author nik
*/
public abstract class JpsNamedCompositeElementBase<Self extends JpsNamedCompositeElementBase<Self>> extends JpsCompositeElementBase<Self> implements JpsNamedElement {
public abstract class JpsNamedCompositeElementBase<Self extends JpsNamedCompositeElementBase<Self>> extends JpsCompositeElementBase<Self>
implements JpsNamedElement {
private String myName;
protected JpsNamedCompositeElementBase(@NotNull String name) {
@@ -0,0 +1,53 @@
package org.jetbrains.jps.util;
import com.intellij.openapi.util.io.FileUtilRt;
import java.io.File;
import java.util.Set;
/**
* @author nik
*/
public class JpsPathUtil {
public static boolean isUnder(Set<File> ancestors, File file) {
File current = file;
while (current != null) {
if (ancestors.contains(current)) {
return true;
}
current = FileUtilRt.getParentFile(current);
}
return false;
}
public static File urlToFile(String url) {
return new File(FileUtilRt.toSystemDependentName(urlToPath(url)));
}
public static String urlToPath(String url) {
if (url == null) return null;
if (url.startsWith("file://")) {
return url.substring("file://".length());
}
else if (url.startsWith("jar://")) {
url = url.substring("jar://".length());
if (url.endsWith("!/")) {
url = url.substring(0, url.length() - "!/".length());
}
}
return url;
}
public static String pathToUrl(String path) {
return "file://" + path;
}
public static String getLibraryRootUrl(File file) {
String path = FileUtilRt.toSystemIndependentName(file.getAbsolutePath());
if (file.isDirectory()) {
return "file://" + path;
}
return "jar://" + path + "!/";
}
}
@@ -0,0 +1 @@
org.jetbrains.jps.model.impl.JpsExElementFactoryImpl
@@ -1,81 +0,0 @@
package org.jetbrains.jps;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.io.FileUtilRt;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.util.Set;
/**
* @author nik
*/
public class JpsPathUtil {
//todo[nik] copied from DeploymentUtil
public static String trimForwardSlashes(@NotNull String path) {
while (path.length() != 0 && (path.charAt(0) == '/' || path.charAt(0) == File.separatorChar)) {
path = path.substring(1);
}
return path;
}
//todo[nik] copied from DeploymentUtil
public static String appendToPath(@NotNull String basePath, @NotNull String relativePath) {
final boolean endsWithSlash = StringUtil.endsWithChar(basePath, '/') || StringUtil.endsWithChar(basePath, '\\');
final boolean startsWithSlash = StringUtil.startsWithChar(relativePath, '/') || StringUtil.startsWithChar(relativePath, '\\');
String tail;
if (endsWithSlash && startsWithSlash) {
tail = trimForwardSlashes(relativePath);
}
else if (!endsWithSlash && !startsWithSlash && basePath.length() > 0 && relativePath.length() > 0) {
tail = "/" + relativePath;
}
else {
tail = relativePath;
}
return basePath + tail;
}
public static boolean isUnder(Set<File> ancestors, File file) {
File current = file;
while (current != null) {
if (ancestors.contains(current)) {
return true;
}
current = FileUtil.getParentFile(current);
}
return false;
}
public static File urlToFile(String url) {
return new File(FileUtilRt.toSystemDependentName(urlToPath(url)));
}
public static String urlToPath(String url) {
if (url == null) return null;
if (url.startsWith("file://")) {
return url.substring("file://".length());
}
else if (url.startsWith("jar://")) {
url = url.substring("jar://".length());
if (url.endsWith("!/")) {
url = url.substring(0, url.length() - "!/".length());
}
}
return url;
}
public static String pathToUrl(String path) {
return "file://" + path;
}
public static String getLibraryRootUrl(File file) {
String path = FileUtilRt.toSystemIndependentName(file.getAbsolutePath());
if (file.isDirectory()) {
return "file://" + path;
}
return "jar://" + path + "!/";
}
}
@@ -8,8 +8,8 @@ import org.jetbrains.jps.model.JpsElementChildRole;
import org.jetbrains.jps.model.artifact.JpsArtifact;
import org.jetbrains.jps.model.artifact.JpsArtifactType;
import org.jetbrains.jps.model.artifact.elements.JpsCompositePackagingElement;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.impl.JpsNamedCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsNamedCompositeElementBase;
/**
* @author nik
@@ -1,8 +1,8 @@
package org.jetbrains.jps.model.artifact.impl;
import org.jetbrains.jps.model.artifact.JpsArtifact;
import org.jetbrains.jps.model.impl.JpsElementCollectionRole;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementCollectionRole;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
/**
* @author nik
@@ -8,7 +8,8 @@ import org.jetbrains.jps.model.artifact.elements.JpsArtifactOutputPackagingEleme
import org.jetbrains.jps.model.artifact.elements.JpsArtifactRootElement;
import org.jetbrains.jps.model.artifact.elements.JpsCompositePackagingElement;
import org.jetbrains.jps.model.artifact.elements.JpsPackagingElement;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.artifact.elements.ex.JpsComplexPackagingElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import java.util.ArrayList;
import java.util.Collections;
@@ -3,9 +3,9 @@ package org.jetbrains.jps.model.artifact.impl.elements;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.artifact.elements.JpsCompositePackagingElement;
import org.jetbrains.jps.model.artifact.elements.JpsPackagingElement;
import org.jetbrains.jps.model.impl.JpsCompositeElementBase;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.impl.JpsElementCollectionRole;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementCollectionRole;
import java.util.List;
@@ -3,7 +3,7 @@ package org.jetbrains.jps.model.artifact.impl.elements;
import com.intellij.openapi.util.Comparing;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.artifact.elements.JpsPackagingElement;
import org.jetbrains.jps.model.impl.JpsElementBase;
import org.jetbrains.jps.model.ex.JpsElementBase;
/**
* @author nik
@@ -6,7 +6,8 @@ import org.jetbrains.jps.model.JpsElementChildRole;
import org.jetbrains.jps.model.artifact.elements.JpsLibraryFilesPackagingElement;
import org.jetbrains.jps.model.artifact.elements.JpsPackagingElement;
import org.jetbrains.jps.model.artifact.elements.JpsPackagingElementFactory;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.artifact.elements.ex.JpsComplexPackagingElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsLibraryReference;
import org.jetbrains.jps.model.library.JpsOrderRootType;
@@ -4,8 +4,8 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.model.JpsElementChildRole;
import org.jetbrains.jps.model.artifact.elements.JpsModuleOutputPackagingElement;
import org.jetbrains.jps.model.impl.JpsCompositeElementBase;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsModuleReference;
@@ -1,4 +1,4 @@
package org.jetbrains.jps.model.impl;
package org.jetbrains.jps.model.ex;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -10,7 +10,7 @@ import java.util.Map;
/**
* @author nik
*/
public class JpsElementContainerImpl implements JpsElementContainer {
public class JpsElementContainerImpl extends JpsElementContainerEx implements JpsElementContainer {
private final Map<JpsElementChildRole<?>, JpsElement> myElements = new HashMap<JpsElementChildRole<?>, JpsElement>();
private final @NotNull JpsCompositeElementBase<?> myParent;
@@ -18,9 +18,9 @@ public class JpsElementContainerImpl implements JpsElementContainer {
myParent = parent;
}
public JpsElementContainerImpl(@NotNull JpsElementContainerImpl original, @NotNull JpsCompositeElementBase<?> parent) {
public JpsElementContainerImpl(@NotNull JpsElementContainerEx original, @NotNull JpsCompositeElementBase<?> parent) {
myParent = parent;
for (Map.Entry<JpsElementChildRole<?>, JpsElement> entry : original.myElements.entrySet()) {
for (Map.Entry<JpsElementChildRole<?>, JpsElement> entry : original.getElementsMap().entrySet()) {
final JpsElementChildRole role = entry.getKey();
final JpsElement copy = entry.getValue().getBulkModificationSupport().createCopy();
JpsElementBase.setParent(copy, myParent);
@@ -82,18 +82,23 @@ public class JpsElementContainerImpl implements JpsElementContainer {
JpsElementBase.setParent(removed, null);
}
public void applyChanges(@NotNull JpsElementContainerImpl modified) {
@Override
protected Map<JpsElementChildRole<?>, JpsElement> getElementsMap() {
return myElements;
}
public void applyChanges(@NotNull JpsElementContainerEx modified) {
for (JpsElementChildRole<?> role : myElements.keySet()) {
applyChanges(role, modified);
}
for (JpsElementChildRole<?> role : modified.myElements.keySet()) {
for (JpsElementChildRole<?> role : modified.getElementsMap().keySet()) {
if (!myElements.containsKey(role)) {
applyChanges(role, modified);
}
}
}
private <T extends JpsElement> void applyChanges(JpsElementChildRole<T> role, JpsElementContainerImpl modified) {
private <T extends JpsElement> void applyChanges(JpsElementChildRole<T> role, JpsElementContainerEx modified) {
final T child = getChild(role);
final T modifiedChild = modified.getChild(role);
if (child != null && modifiedChild != null) {
@@ -2,6 +2,7 @@ package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsDummyElement;
import org.jetbrains.jps.model.ex.JpsElementBase;
/**
* @author nik
@@ -5,6 +5,7 @@ import com.intellij.util.SmartList;
import com.intellij.util.containers.FilteringIterator;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.ex.JpsElementBase;
import java.util.*;
@@ -16,7 +17,7 @@ public class JpsElementCollectionImpl<E extends JpsElement> extends JpsElementBa
private final Map<E, E> myCopyToOriginal;
private final JpsElementChildRole<E> myChildRole;
public JpsElementCollectionImpl(JpsElementChildRole<E> role) {
JpsElementCollectionImpl(JpsElementChildRole<E> role) {
myChildRole = role;
myElements = new SmartList<E>();
myCopyToOriginal = null;
@@ -3,6 +3,7 @@ package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import java.util.Map;
@@ -3,6 +3,8 @@ package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElementChildRole;
import org.jetbrains.jps.model.JpsEncodingProjectConfiguration;
import org.jetbrains.jps.model.ex.JpsElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import java.util.Collections;
import java.util.HashMap;
@@ -0,0 +1,31 @@
package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementChildRole;
import org.jetbrains.jps.model.JpsElementCollection;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsElementContainerEx;
import org.jetbrains.jps.model.ex.JpsElementContainerImpl;
import org.jetbrains.jps.model.ex.JpsExElementFactory;
/**
* @author nik
*/
public class JpsExElementFactoryImpl extends JpsExElementFactory {
@Override
public JpsElementContainerEx createContainer(@NotNull JpsCompositeElementBase<?> parent) {
return new JpsElementContainerImpl(parent);
}
@Override
public JpsElementContainerEx createContainerCopy(@NotNull JpsElementContainerEx original,
@NotNull JpsCompositeElementBase<?> parent) {
return new JpsElementContainerImpl(original, parent);
}
@Override
public <E extends JpsElement> JpsElementCollection<E> createCollection(JpsElementChildRole<E> role) {
return new JpsElementCollectionImpl<E>(role);
}
}
@@ -3,6 +3,8 @@ package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElementChildRole;
import org.jetbrains.jps.model.JpsFileTypesConfiguration;
import org.jetbrains.jps.model.ex.JpsElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
/**
* @author nik
@@ -2,6 +2,7 @@ package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.ex.JpsElementReferenceBase;
/**
* @author nik
@@ -3,6 +3,8 @@ package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import java.util.List;
@@ -11,7 +13,8 @@ import java.util.List;
*/
public abstract class JpsNamedElementReferenceBase<S extends JpsNamedElement, T extends JpsNamedElement, Self extends JpsNamedElementReferenceBase<S, T, Self>>
extends JpsCompositeElementBase<Self> implements JpsElementReference<T> {
private static final JpsElementChildRole<JpsElementReference<? extends JpsCompositeElement>> PARENT_REFERENCE_ROLE = JpsElementChildRoleBase.create("parent");
private static final JpsElementChildRole<JpsElementReference<? extends JpsCompositeElement>> PARENT_REFERENCE_ROLE = JpsElementChildRoleBase
.create("parent");
protected final String myElementName;
protected JpsNamedElementReferenceBase(@NotNull String elementName, @NotNull JpsElementReference<? extends JpsCompositeElement> parentReference) {
@@ -6,6 +6,7 @@ import org.jetbrains.jps.model.JpsCompositeElement;
import org.jetbrains.jps.model.JpsElementCollection;
import org.jetbrains.jps.model.JpsElementReference;
import org.jetbrains.jps.model.JpsNamedElement;
import org.jetbrains.jps.model.ex.JpsElementCollectionRole;
/**
* @author nik
@@ -2,6 +2,7 @@ package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.ex.JpsElementReferenceBase;
/**
* @author nik
@@ -2,6 +2,8 @@ package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementCollectionRole;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsLibraryCollection;
import org.jetbrains.jps.model.library.JpsLibraryType;
@@ -3,6 +3,7 @@ package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsEventDispatcher;
import org.jetbrains.jps.model.JpsModel;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
/**
* @author nik
@@ -2,6 +2,7 @@ package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.ex.JpsElementBase;
/**
* @author nik
@@ -2,6 +2,7 @@ package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.ex.JpsElementBase;
import java.util.ArrayList;
import java.util.List;
@@ -3,6 +3,7 @@ package org.jetbrains.jps.model.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElementCreator;
import org.jetbrains.jps.model.JpsUrlList;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
/**
* @author nik
@@ -3,8 +3,8 @@ package org.jetbrains.jps.model.java.impl;
import com.intellij.openapi.util.Comparing;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElementCreator;
import org.jetbrains.jps.model.impl.JpsElementBase;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.java.ExplodedDirectoryModuleExtension;
/**
@@ -2,7 +2,7 @@ package org.jetbrains.jps.model.java.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElementCreator;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.java.JpsJavaModuleExtension;
/**
@@ -2,7 +2,7 @@ package org.jetbrains.jps.model.java.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElementCreator;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.java.JpsJavaProjectExtension;
/**
@@ -1,7 +1,7 @@
package org.jetbrains.jps.model.java.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.impl.JpsElementBase;
import org.jetbrains.jps.model.ex.JpsElementBase;
import org.jetbrains.jps.model.java.JpsJavaDependencyExtension;
import org.jetbrains.jps.model.java.JpsJavaDependencyScope;
@@ -2,7 +2,7 @@ package org.jetbrains.jps.model.java.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElementCreator;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.java.JpsJavaDependencyExtension;
import org.jetbrains.jps.model.java.JpsJavaDependencyScope;
@@ -3,7 +3,7 @@ package org.jetbrains.jps.model.java.impl;
import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.model.JpsDummyElement;
import org.jetbrains.jps.model.JpsGlobal;
import org.jetbrains.jps.model.JpsProject;
@@ -3,7 +3,7 @@ package org.jetbrains.jps.model.java.impl;
import com.intellij.openapi.util.Comparing;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsUrlList;
import org.jetbrains.jps.model.impl.JpsCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
import org.jetbrains.jps.model.impl.JpsUrlListRole;
import org.jetbrains.jps.model.java.JpsJavaModuleExtension;
import org.jetbrains.jps.model.java.LanguageLevel;
@@ -2,7 +2,7 @@ package org.jetbrains.jps.model.java.impl;
import com.intellij.openapi.util.Comparing;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.impl.JpsElementBase;
import org.jetbrains.jps.model.ex.JpsElementBase;
import org.jetbrains.jps.model.java.JpsJavaProjectExtension;
import org.jetbrains.jps.model.java.LanguageLevel;
@@ -6,8 +6,8 @@ import org.jetbrains.jps.model.JpsDummyElement;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementReference;
import org.jetbrains.jps.model.JpsModel;
import org.jetbrains.jps.model.impl.JpsCompositeElementBase;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.java.JpsJavaSdkType;
import org.jetbrains.jps.model.java.JpsJavaSdkTypeWrapper;
import org.jetbrains.jps.model.library.JpsLibrary;
@@ -1,7 +1,7 @@
package org.jetbrains.jps.model.java.impl.compiler;
import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.jps.JpsPathUtil;
import com.intellij.openapi.util.io.FileUtilRt;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.model.java.compiler.JpsCompilerExcludes;
import java.io.File;
@@ -41,7 +41,7 @@ public class JpsCompilerExcludesImpl implements JpsCompilerExcludes {
}
if (!myDirectories.isEmpty() || !myRecursivelyExcludedDirectories.isEmpty()) { // optimization
File parent = FileUtil.getParentFile(file);
File parent = FileUtilRt.getParentFile(file);
if (myDirectories.contains(parent)) {
return true;
}
@@ -50,7 +50,7 @@ public class JpsCompilerExcludesImpl implements JpsCompilerExcludes {
if (myRecursivelyExcludedDirectories.contains(parent)) {
return true;
}
parent = FileUtil.getParentFile(parent);
parent = FileUtilRt.getParentFile(parent);
}
}
return false;
@@ -3,8 +3,8 @@ package org.jetbrains.jps.model.java.impl.compiler;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.model.JpsElementChildRole;
import org.jetbrains.jps.model.impl.JpsCompositeElementBase;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.java.compiler.JpsCompilerExcludes;
import org.jetbrains.jps.model.java.compiler.JpsJavaCompilerConfiguration;
import org.jetbrains.jps.model.java.compiler.JpsJavaCompilerOptions;
@@ -3,11 +3,11 @@ package org.jetbrains.jps.model.library.impl;
import com.intellij.openapi.util.io.FileUtilRt;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.impl.JpsElementCollectionImpl;
import org.jetbrains.jps.model.impl.JpsElementCollectionRole;
import org.jetbrains.jps.model.impl.JpsNamedCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsElementCollectionRole;
import org.jetbrains.jps.model.ex.JpsNamedCompositeElementBase;
import org.jetbrains.jps.model.library.*;
import java.io.File;
@@ -2,8 +2,8 @@ package org.jetbrains.jps.model.library.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsEventDispatcher;
import org.jetbrains.jps.model.impl.JpsElementCollectionRole;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementCollectionRole;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsLibraryListener;
@@ -1,7 +1,7 @@
package org.jetbrains.jps.model.library.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.impl.JpsElementBase;
import org.jetbrains.jps.model.ex.JpsElementBase;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsLibraryRoot;
import org.jetbrains.jps.model.library.JpsOrderRootType;
@@ -2,7 +2,7 @@ package org.jetbrains.jps.model.library.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsEventDispatcher;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.library.JpsLibraryRoot;
import org.jetbrains.jps.model.library.JpsLibraryRootListener;
import org.jetbrains.jps.model.library.JpsOrderRootType;
@@ -4,7 +4,7 @@ import com.intellij.openapi.util.Comparing;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementFactory;
import org.jetbrains.jps.model.impl.JpsCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
import org.jetbrains.jps.model.library.sdk.JpsSdkType;
import org.jetbrains.jps.model.library.impl.JpsLibraryImpl;
import org.jetbrains.jps.model.library.sdk.JpsSdk;
@@ -1,9 +1,9 @@
package org.jetbrains.jps.model.module.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.impl.JpsCompositeElementBase;
import org.jetbrains.jps.model.impl.JpsElementCollectionRole;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsElementCollectionRole;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsLibraryReference;
import org.jetbrains.jps.model.library.sdk.JpsSdkType;
@@ -3,7 +3,7 @@ package org.jetbrains.jps.model.module.impl;
import com.intellij.util.CollectConsumer;
import com.intellij.util.Consumer;
import com.intellij.util.Processor;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsOrderRootType;
import org.jetbrains.jps.model.module.*;
@@ -1,6 +1,6 @@
package org.jetbrains.jps.model.module.impl;
import org.jetbrains.jps.model.impl.JpsCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
import org.jetbrains.jps.model.module.JpsDependencyElement;
import org.jetbrains.jps.model.module.JpsModule;
@@ -5,8 +5,8 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementChildRole;
import org.jetbrains.jps.model.JpsElementCollection;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.impl.JpsNamedCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsNamedCompositeElementBase;
import org.jetbrains.jps.model.module.JpsFacet;
import org.jetbrains.jps.model.module.JpsFacetReference;
import org.jetbrains.jps.model.module.JpsFacetType;
@@ -2,8 +2,8 @@ package org.jetbrains.jps.model.module.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsEventDispatcher;
import org.jetbrains.jps.model.impl.JpsElementCollectionRole;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementCollectionRole;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.module.JpsFacet;
import org.jetbrains.jps.model.module.JpsFacetListener;
@@ -2,7 +2,7 @@ package org.jetbrains.jps.model.module.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsLibraryReference;
import org.jetbrains.jps.model.module.JpsLibraryDependency;
@@ -3,7 +3,7 @@ package org.jetbrains.jps.model.module.impl;
import com.intellij.openapi.util.Ref;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElementChildRole;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsModuleDependency;
import org.jetbrains.jps.model.module.JpsModuleReference;
@@ -3,9 +3,8 @@ package org.jetbrains.jps.model.module.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.model.*;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.impl.JpsElementCollectionImpl;
import org.jetbrains.jps.model.impl.JpsNamedCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsNamedCompositeElementBase;
import org.jetbrains.jps.model.impl.JpsUrlListRole;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsLibraryCollection;
@@ -3,8 +3,8 @@ package org.jetbrains.jps.model.module.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElementChildRole;
import org.jetbrains.jps.model.JpsEventDispatcher;
import org.jetbrains.jps.model.impl.JpsElementCollectionRole;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementCollectionRole;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsModuleListener;
@@ -2,10 +2,10 @@ package org.jetbrains.jps.model.module.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementType;
import org.jetbrains.jps.model.impl.JpsCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
import org.jetbrains.jps.model.module.JpsTypedModuleSourceRoot;
@@ -2,8 +2,8 @@ package org.jetbrains.jps.model.module.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsEventDispatcher;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.impl.JpsElementCollectionRole;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementCollectionRole;
import org.jetbrains.jps.model.module.JpsModuleSourceRoot;
import org.jetbrains.jps.model.module.JpsModuleSourceRootListener;
@@ -2,7 +2,7 @@ package org.jetbrains.jps.model.module.impl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.library.sdk.JpsSdkReference;
import org.jetbrains.jps.model.library.sdk.JpsSdkType;
@@ -4,8 +4,8 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementCreator;
import org.jetbrains.jps.model.impl.JpsCompositeElementBase;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.library.sdk.JpsSdkReference;
import org.jetbrains.jps.model.library.sdk.JpsSdkType;
import org.jetbrains.jps.model.module.JpsSdkReferencesTable;
@@ -3,7 +3,7 @@ package org.jetbrains.jps.model;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.application.ex.PathManagerEx;
import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.model.java.*;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsOrderRootType;
@@ -1,7 +1,7 @@
package org.jetbrains.jps.model.serialization;
import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.model.java.JpsJavaExtensionService;
import org.jetbrains.jps.model.java.compiler.JpsCompilerExcludes;
import org.jetbrains.jps.model.java.compiler.JpsJavaCompilerConfiguration;
@@ -10,7 +10,7 @@
<orderEntry type="module" module-name="projectModel-api" exported="" />
<orderEntry type="module" module-name="core-impl" />
<orderEntry type="module" module-name="jps-model-api" />
<orderEntry type="module" module-name="jps-model-impl" exported="" />
<orderEntry type="module" module-name="jps-model-impl" />
<orderEntry type="module" module-name="jps-model-serialization" exported="" />
</component>
</module>
@@ -380,4 +380,36 @@ public class FileUtilRt {
}
return bytes;
}
/**
* Get parent for the file. The method correctly
* processes "." and ".." in file names. The name
* remains relative if was relative before.
*
* @param file a file to analyze
* @return a parent or the null if the file has no parent.
*/
@Nullable
public static File getParentFile(@NotNull File file) {
int skipCount = 0;
File parentFile = file;
while (true) {
parentFile = parentFile.getParentFile();
if (parentFile == null) {
return null;
}
if (".".equals(parentFile.getName())) {
continue;
}
if ("..".equals(parentFile.getName())) {
skipCount++;
continue;
}
if (skipCount > 0) {
skipCount--;
continue;
}
return parentFile;
}
}
}
@@ -201,36 +201,9 @@ public class FileUtil extends FileUtilRt {
return result;
}
/**
* Get parent for the file. The method correctly
* processes "." and ".." in file names. The name
* remains relative if was relative before.
*
* @param file a file to analyze
* @return a parent or the null if the file has no parent.
*/
@Nullable
public static File getParentFile(@NotNull File file) {
int skipCount = 0;
File parentFile = file;
while (true) {
parentFile = parentFile.getParentFile();
if (parentFile == null) {
return null;
}
if (".".equals(parentFile.getName())) {
continue;
}
if ("..".equals(parentFile.getName())) {
skipCount++;
continue;
}
if (skipCount > 0) {
skipCount--;
continue;
}
return parentFile;
}
return FileUtilRt.getParentFile(file);
}
@NotNull
@@ -14,7 +14,6 @@
<orderEntry type="library" name="NanoXML" level="project" />
<orderEntry type="module" module-name="jps-model-api" />
<orderEntry type="module" module-name="jps-model-serialization" />
<orderEntry type="module" module-name="jps-model-impl" />
</component>
</module>
@@ -16,7 +16,7 @@ import org.jetbrains.android.util.AndroidCompilerMessageKind;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.ProjectPaths;
import org.jetbrains.jps.android.model.JpsAndroidModuleExtension;
@@ -8,6 +8,7 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.io.FileUtilRt;
import com.intellij.util.ArrayUtil;
import com.intellij.util.Processor;
import com.intellij.util.containers.HashMap;
@@ -911,7 +912,7 @@ public class AndroidSourceGeneratingBuilder extends ModuleLevelBuilder {
}
final File sourceRoot = descriptor.root;
final File parent = FileUtil.getParentFile(sourceFile);
final File parent = FileUtilRt.getParentFile(sourceFile);
if (parent == null) {
return null;
}
@@ -980,7 +981,7 @@ public class AndroidSourceGeneratingBuilder extends ModuleLevelBuilder {
return null;
}
final String relPath = FileUtil.getRelativePath(descriptor.root, FileUtil.getParentFile(file));
final String relPath = FileUtil.getRelativePath(descriptor.root, FileUtilRt.getParentFile(file));
if (relPath == null) {
return null;
}
@@ -20,10 +20,10 @@ import com.intellij.util.xmlb.XmlSerializerUtil;
import org.jetbrains.android.util.AndroidNativeLibData;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.android.model.JpsAndroidModuleExtension;
import org.jetbrains.jps.model.impl.JpsElementBase;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.module.JpsModule;
import java.io.File;
@@ -11,7 +11,7 @@
<orderEntry type="module" module-name="jps-model-api" />
<orderEntry type="module" module-name="jps-model-serialization" />
<orderEntry type="module" module-name="jps-builders" />
<orderEntry type="module" module-name="jps-model-impl" />
<orderEntry type="module" module-name="jps-model-impl" scope="TEST" />
</component>
</module>
@@ -21,7 +21,7 @@ import com.intellij.openapi.util.io.FileUtil;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.JpsPathUtil;
import org.jetbrains.jps.util.JpsPathUtil;
import org.jetbrains.jps.devkit.model.JpsIdeaSdkProperties;
import org.jetbrains.jps.devkit.model.JpsIdeaSdkType;
import org.jetbrains.jps.devkit.model.JpsPluginModuleProperties;
@@ -7,7 +7,7 @@ import org.jetbrains.jps.maven.model.JpsMavenModuleExtension;
import org.jetbrains.jps.model.JpsElementChildRole;
import org.jetbrains.jps.model.JpsElementFactory;
import org.jetbrains.jps.model.JpsSimpleElement;
import org.jetbrains.jps.model.impl.JpsElementChildRoleBase;
import org.jetbrains.jps.model.ex.JpsElementChildRoleBase;
import org.jetbrains.jps.model.module.JpsDependencyElement;
import org.jetbrains.jps.model.module.JpsModule;

Some files were not shown because too many files have changed in this diff Show More