diff options
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(); |