diff options
author | Jan Christopher Vogt <oss.nsp@cvogt.org> | 2017-02-10 01:11:22 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-10 01:11:22 -0500 |
commit | d743136c6b98fa91f501cc15dc47530f8f93b8fe (patch) | |
tree | aedb9af30e41f056aea148cc9e3b37d17327ca54 /compatibility | |
parent | e2cb8726735ba306ade3befefae3b87549b52c9f (diff) | |
parent | f5e653e033e468c58e8a832e0dce3a7020a66ce4 (diff) | |
download | cbt-d743136c6b98fa91f501cc15dc47530f8f93b8fe.tar.gz cbt-d743136c6b98fa91f501cc15dc47530f8f93b8fe.tar.bz2 cbt-d743136c6b98fa91f501cc15dc47530f8f93b8fe.zip |
Merge pull request #314 from cvogt/fix-update-bugs
better caching and change propagation fixing link-time errors
Diffstat (limited to 'compatibility')
-rw-r--r-- | compatibility/Context.java | 35 | ||||
-rw-r--r-- | compatibility/Dependency.java | 15 | ||||
-rw-r--r-- | compatibility/IncompatibleCbtVersionException.java | 10 | ||||
-rw-r--r-- | compatibility/Result.java | 2 |
4 files changed, 53 insertions, 9 deletions
diff --git a/compatibility/Context.java b/compatibility/Context.java index 1ec0f54..afd0b15 100644 --- a/compatibility/Context.java +++ b/compatibility/Context.java @@ -1,22 +1,43 @@ package cbt; import java.io.*; -import java.util.concurrent.ConcurrentHashMap; +import java.util.*; +import java.util.concurrent.*; // TODO: try to reduce the number of members -public abstract class Context{ +public interface Context{ + // recently added methods that needs default values for old versions to work + public default long cbtLastModified(){ + throw new IncompatibleCbtVersionException("You need to define method cbtLastModified."); + }; + public default Map<Object,Object> persistentCache(){ + throw new IncompatibleCbtVersionException("You need to define method persistentCache."); + }; + public default Map<Object,Object> transientCache(){ + throw new IncompatibleCbtVersionException("You need to define method transientCache."); + }; + public default long start(){ + throw new IncompatibleCbtVersionException("You need to define method start."); + }; + + // methods that exist for longer which every CBT version in use should have by now, no default values needed public abstract File projectDirectory(); public abstract File cwd(); // REPLACE by something that allows to run cbt on some other directly public abstract String[] argsArray(); // replace this by https://github.com/cvogt/cbt/issues/172 ? public abstract String[] enabledLoggersArray(); - public abstract Long startCompat(); - public abstract Boolean cbtHasChangedCompat(); public abstract String scalaVersionOrNull(); // needed to propagate scalaVersion to dependendee builds - public abstract ConcurrentHashMap<String,Object> permanentKeys(); - public abstract ConcurrentHashMap<Object,ClassLoader> permanentClassLoaders(); - public abstract ConcurrentHashMap<Object,Object> taskCache(); public abstract File cache(); public abstract File cbtHome(); public abstract File cbtRootHome(); // REMOVE public abstract File compatibilityTarget(); // maybe replace this with search in the classloader for it? public abstract BuildInterface parentBuildOrNull(); + + // deprecated methods + @java.lang.Deprecated + public abstract Long startCompat(); + @java.lang.Deprecated + public abstract Boolean cbtHasChangedCompat(); + @java.lang.Deprecated + public abstract ConcurrentHashMap<String,Object> permanentKeys(); + @java.lang.Deprecated + public abstract ConcurrentHashMap<Object,ClassLoader> permanentClassLoaders(); } diff --git a/compatibility/Dependency.java b/compatibility/Dependency.java index d491174..1f719c2 100644 --- a/compatibility/Dependency.java +++ b/compatibility/Dependency.java @@ -2,9 +2,22 @@ package cbt; import java.io.*; public interface Dependency{ + // recently added methods that needs default values for old versions to work + public default String moduleKey(){ + throw new IncompatibleCbtVersionException("You need to define method moduleKey."); + }; + public default long lastModified(){ + throw new IncompatibleCbtVersionException("You need to define method lastModified."); + }; + + // methods that exist for longer which every CBT version in use should have by now, no default values needed public abstract String show(); - public abstract Boolean needsUpdateCompat(); public abstract Dependency[] dependenciesArray(); public abstract File[] dependencyClasspathArray(); public abstract File[] exportedClasspathArray(); + + // deprecated methods + @java.lang.Deprecated + public abstract boolean needsUpdateCompat(); } + diff --git a/compatibility/IncompatibleCbtVersionException.java b/compatibility/IncompatibleCbtVersionException.java new file mode 100644 index 0000000..dee50fb --- /dev/null +++ b/compatibility/IncompatibleCbtVersionException.java @@ -0,0 +1,10 @@ +package cbt; + +public class IncompatibleCbtVersionException extends RuntimeException{ + public IncompatibleCbtVersionException( String msg, Throwable parent ){ + super( msg, parent ); + } + public IncompatibleCbtVersionException( String msg ){ + super( msg ); + } +} diff --git a/compatibility/Result.java b/compatibility/Result.java index 220aa3a..dadc3af 100644 --- a/compatibility/Result.java +++ b/compatibility/Result.java @@ -2,7 +2,7 @@ package cbt; import java.io.*; public interface Result<T>{ - public abstract Integer exitCode(); + public abstract int exitCode(); public abstract OutputStream out(); public abstract OutputStream err(); public abstract InputStream in(); |