settings: JavaCodeLibrary validation refactored and improved
authorJan Vrany <jan.vrany@fit.cvut.cz>
Thu, 19 Mar 2015 17:27:21 +0000
changeset 3409 f9d023dc6606
parent 3400 04b5daf050d9
child 3410 ff9851673af4
settings: JavaCodeLibrary validation refactored and improved Added JavaCodeLibrary>>validate which raises JavaCodeLibraryValidationWarnings. Made JavaCodeBundleEditor to display items with warnings in read.
JavaCodeLibrary.st
JavaReleaseTests.st
abbrev.stc
bc.mak
stx_libjava.st
tools/JavaCodeBundleEditor.st
tools/JavaCodeLibraryEditor.st
tools/JavaCodeLibraryValidationWarning.st
tools/Make.proto
tools/Make.spec
tools/abbrev.stc
tools/bc.mak
tools/extensions.st
tools/libInit.cc
tools/stx_libjava_tools.st
--- a/JavaCodeLibrary.st	Tue Mar 17 20:56:13 2015 +0000
+++ b/JavaCodeLibrary.st	Thu Mar 19 17:27:21 2015 +0000
@@ -20,6 +20,8 @@
 "
 "{ Package: 'stx:libjava' }"
 
+"{ NameSpace: Smalltalk }"
+
 JavaCodeLibraryOrBundle subclass:#JavaCodeLibrary
 	instanceVariableNames:'classes sources javadoc'
 	classVariableNames:''
@@ -103,6 +105,7 @@
     sources := something.
 ! !
 
+
 !JavaCodeLibrary methodsFor:'comparing'!
 
 = another
@@ -115,23 +118,6 @@
     "Created: / 14-04-2014 / 23:08:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!JavaCodeLibrary methodsFor:'displaying'!
-
-displayString
-    | displayString |
-
-    displayString := self name.
-    self isLibrary ifTrue:[ 
-        self sources isNil ifTrue:[ 
-            displayString := displayString , ' ' , ('(no sources)' asText colorizeAllWith: Color gray)  
-        ].
-    ].
-
-    ^ displayString
-
-    "Created: / 15-04-2014 / 18:56:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !JavaCodeLibrary methodsFor:'enumerating'!
 
 allLibrariesDo:aBlock 
@@ -176,6 +162,7 @@
     "Created: / 25-01-2013 / 21:44:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !JavaCodeLibrary class methodsFor:'documentation'!
 
 version
--- a/JavaReleaseTests.st	Tue Mar 17 20:56:13 2015 +0000
+++ b/JavaReleaseTests.st	Thu Mar 19 17:27:21 2015 +0000
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "
  COPYRIGHT (c) 1996-2015 by Claus Gittinger
 
--- a/abbrev.stc	Tue Mar 17 20:56:13 2015 +0000
+++ b/abbrev.stc	Thu Mar 19 17:27:21 2015 +0000
@@ -3,7 +3,6 @@
 # it provides information about a classes filename, category and especially namespace.
 GroovyCompiler GroovyCompiler stx:libjava 'Languages-Groovy-Compiler' 0
 GroovyEvaluator GroovyEvaluator stx:libjava 'Languages-Groovy-Compiler' 0
-GroovyEvaluatorTests GroovyEvaluatorTests stx:libjava 'Languages-Groovy-Tests' 1
 GroovyLanguage GroovyLanguage stx:libjava 'Languages-Groovy-Support' 1
 GroovySourceFileWriter GroovySourceFileWriter stx:libjava 'Languages-Groovy-Support' 0
 JavaAnnotation JavaAnnotation stx:libjava 'Languages-Java-Reader-Support' 0
@@ -11,18 +10,14 @@
 JavaAnnotationDefault JavaAnnotationDefault stx:libjava 'Languages-Java-Annotations' 1
 JavaAnnotationDictionary JavaAnnotationDictionary stx:libjava 'Languages-Java-Annotations' 1
 JavaAnnotationValue JavaAnnotationValue stx:libjava 'Languages-Java-Reader-Support' 0
-JavaAntProjectResource JavaAntProjectResource stx:libjava 'Languages-Java-Tests' 2
 JavaArray JavaArray stx:libjava 'Languages-Java-Classes' 1
 JavaBooleanArray JavaBooleanArray stx:libjava 'Languages-Java-Support' 0
 JavaByte JavaByte stx:libjava 'Languages-Java-Support' 0
 JavaByteCodeProcessor JavaByteCodeProcessor stx:libjava 'Languages-Java-Bytecode' 0
-JavaByteCodeProcessorTests JavaByteCodeProcessorTests stx:libjava 'Languages-Java-Tests' 1
 JavaClassAccessor JavaClassAccessor stx:libjava 'Languages-Java-Classes' 0
 JavaClassEnvironment JavaClassEnvironment stx:libjava 'Languages-Java-Support' 0
-JavaClassLoadingTests JavaClassLoadingTests stx:libjava 'Languages-Java-Tests-ClassLoading' 1
 JavaClassQuery JavaClassQuery stx:libjava 'Languages-Java-Classes' 1
 JavaClassReloader JavaClassReloader stx:libjava 'Languages-Java-Support' 0
-JavaClassReloaderTests JavaClassReloaderTests stx:libjava 'Languages-Java-Tests-ClassReloading' 1
 JavaCodeLibraryOrBundle JavaCodeLibraryOrBundle stx:libjava 'Languages-Java-Support-Libraries' 0
 JavaCompilerForSmalltalkExtensionsOnly JavaCompilerForSmalltalkExtensionsOnly stx:libjava 'Languages-Java-Support-Compiling' 0
 JavaCompiler_Eclipse JavaCompiler_Eclipse stx:libjava 'Languages-Java-Tools-Eclipse' 0
@@ -33,47 +28,33 @@
 JavaDescriptor JavaDescriptor stx:libjava 'Languages-Java-Support' 0
 JavaError JavaError stx:libjava 'Languages-Java-Support' 1
 JavaExceptionTable JavaExceptionTable stx:libjava 'Languages-Java-Support' 0
-JavaExceptionTests JavaExceptionTests stx:libjava 'Languages-Java-Tests' 1
 JavaField JavaField stx:libjava 'Languages-Java-Reader-Support' 0
 JavaFinalizationRegistry JavaFinalizationRegistry stx:libjava 'Languages-Java-Support' 0
-JavaFreshlyInitializedResource JavaFreshlyInitializedResource stx:libjava 'Languages-Java-Tests' 1
-JavaInitializedResource JavaInitializedResource stx:libjava 'Languages-Java-Tests' 1
 JavaInnerClasses JavaInnerClasses stx:libjava 'Languages-Java-Support' 0
-JavaJUnitTests JavaJUnitTests stx:libjava 'Languages-Java-Tests-Libraries' 1
 JavaLanguage JavaLanguage stx:libjava 'Languages-Java-Support' 1
 JavaLibraries JavaLibraries stx:libjava 'Languages-Java-Support' 0
-JavaLibrariesResource JavaLibrariesResource stx:libjava 'Languages-Java-Tests' 1
 JavaLocalVariableTable JavaLocalVariableTable stx:libjava 'Languages-Java-Support' 0
 JavaLocalVariableTableEntry JavaLocalVariableTableEntry stx:libjava 'Languages-Java-Support' 0
 JavaLookup JavaLookup stx:libjava 'Languages-Java-Interop' 0
-JavaLookupResolutionAlgorithmTests JavaLookupResolutionAlgorithmTests stx:libjava 'Languages-Java-Tests-Interop' 1
-JavaLookupTests JavaLookupTests stx:libjava 'Languages-Java-Tests-Interop' 1
 JavaMetaclass JavaMetaclass stx:libjava 'Languages-Java-Classes' 0
 JavaMonitor JavaMonitor stx:libjava 'Languages-Java-Support' 0
-JavaMonitorsTests JavaMonitorsTests stx:libjava 'Languages-Java-Tests' 1
 JavaNameAndType2 JavaNameAndType2 stx:libjava 'Languages-Java-Reader-Support-new' 0
 JavaNativeMemory JavaNativeMemory stx:libjava 'Languages-Java-Support' 0
-JavaNativeMemoryTests JavaNativeMemoryTests stx:libjava 'Languages-Java-Tests' 1
 JavaNioSupport JavaNioSupport stx:libjava 'Languages-Java-Support-Native' 0
 JavaObject JavaObject stx:libjava 'Languages-Java-Classes' 0
 JavaObjectDictionary JavaObjectDictionary stx:libjava 'Languages-Java-Support' 0
 JavaPopUpView JavaPopUpView stx:libjava 'Languages-Java-Views-Support' 2
 JavaProcess JavaProcess stx:libjava 'Languages-Java-Classes' 0
 JavaRef2 JavaRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaRefsAndConstantPoolTestCase JavaRefsAndConstantPoolTestCase stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaRelease JavaRelease stx:libjava 'Languages-Java-Support' 1
-JavaReleaseTests JavaReleaseTests stx:libjava 'Languages-Java-Tests' 1
 JavaResolver JavaResolver stx:libjava 'Languages-Java-Reader-Support-new' 0
 JavaShort JavaShort stx:libjava 'Languages-Java-Support' 0
 JavaSlotIndexCache JavaSlotIndexCache stx:libjava 'Languages-Java-Support' 0
 JavaSocket JavaSocket stx:libjava 'Languages-Java-Support' 0
 JavaSourceCodeCache JavaSourceCodeCache stx:libjava 'Languages-Java-Support' 1
 JavaSourceFileWriter JavaSourceFileWriter stx:libjava 'Languages-Java-Support' 0
-JavaTestCaseProxy JavaTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
 JavaTestsLoader JavaTestsLoader stx:libjava 'Languages-Java-Tests' 0
-JavaThreadingTests JavaThreadingTests stx:libjava 'Languages-Java-Tests' 1
 JavaTopView JavaTopView stx:libjava 'Languages-Java-Views-Support' 2
-JavaUTF8Tests JavaUTF8Tests stx:libjava 'Languages-Java-Tests' 1
 JavaUnresolvedCompilationError JavaUnresolvedCompilationError stx:libjava 'Languages-Java-Support' 1
 JavaUnresolvedConstant JavaUnresolvedConstant stx:libjava 'Languages-Java-Reader-Support' 0
 JavaUtilities JavaUtilities stx:libjava 'Languages-Java-Utilities' 0
@@ -89,7 +70,6 @@
 SmalltalkAppletStub SmalltalkAppletStub stx:libjava 'Languages-Java-Views-Support' 0
 stx_libjava stx_libjava stx:libjava '* Projects & Packages *' 3
 GroovyMetaclass GroovyMetaclass stx:libjava 'Languages-Groovy-Classes' 0
-JUnitTestCaseProxy JUnitTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
 Java Java stx:libjava 'Languages-Java-Support' 0
 JavaAnnotationArrayValue JavaAnnotationArrayValue stx:libjava 'Languages-Java-Reader-Support' 0
 JavaAnnotationClassValue JavaAnnotationClassValue stx:libjava 'Languages-Java-Reader-Support' 0
@@ -98,15 +78,12 @@
 JavaAnnotationPrimitiveValue JavaAnnotationPrimitiveValue stx:libjava 'Languages-Java-Reader-Support' 0
 JavaBehavior JavaBehavior stx:libjava 'Languages-Java-Classes' 0
 JavaByteCodeDisassembler JavaByteCodeDisassembler stx:libjava 'Languages-Java-Bytecode' 0
-JavaByteCodeDisassemblerTests JavaByteCodeDisassemblerTests stx:libjava 'Languages-Java-Tests' 1
 JavaByteCodeEnumerator JavaByteCodeEnumerator stx:libjava 'Languages-Java-Support-Decompiling' 0
 JavaByteCodeProcessorAdapter JavaByteCodeProcessorAdapter stx:libjava 'Languages-Java-Bytecode' 0
 JavaClassAnnotationContainer JavaClassAnnotationContainer stx:libjava 'Languages-Java-Annotations' 1
 JavaClassMemberRef2 JavaClassMemberRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
 JavaClassReader JavaClassReader stx:libjava 'Languages-Java-Support' 0
-JavaClassReaderTests JavaClassReaderTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaClassRef2 JavaClassRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaClassRefTests JavaClassRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaClassRegistry JavaClassRegistry stx:libjava 'Languages-Java-Support' 0
 JavaCodeBundle JavaCodeBundle stx:libjava 'Languages-Java-Support-Libraries' 0
 JavaCodeLibrary JavaCodeLibrary stx:libjava 'Languages-Java-Support-Libraries' 0
@@ -114,22 +91,16 @@
 JavaFieldAnnotationContainer JavaFieldAnnotationContainer stx:libjava 'Languages-Java-Annotations' 1
 JavaFieldDescriptor JavaFieldDescriptor stx:libjava 'Languages-Java-Support' 0
 JavaFieldDescriptorWithUnionType JavaFieldDescriptorWithUnionType stx:libjava 'Languages-Java-Support' 0
-JavaFieldRefTests JavaFieldRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
-JavaInterfaceMethodRefTests JavaInterfaceMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaInvalidRefError JavaInvalidRefError stx:libjava 'Languages-Java-Support' 1
 JavaInvokeDynamic2 JavaInvokeDynamic2 stx:libjava 'Languages-Java-Reader-Support-new' 0
 JavaMethod JavaMethod stx:libjava 'Languages-Java-Classes' 0
 JavaMethodAnnotationContainer JavaMethodAnnotationContainer stx:libjava 'Languages-Java-Annotations' 1
 JavaMethodDescriptor JavaMethodDescriptor stx:libjava 'Languages-Java-Support' 0
 JavaMethodHandle2 JavaMethodHandle2 stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaMethodRefTests JavaMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaMethodType2 JavaMethodType2 stx:libjava 'Languages-Java-Reader-Support-new' 0
 JavaMirror JavaMirror stx:libjava 'Languages-Java-Classes' 0
 JavaNativeMethodImpl_OpenJDK6 JavaNativeMethodImpl_OpenJDK6 stx:libjava 'Languages-Java-Support-Java 6' 0
-JavaRefMock JavaRefMock stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 0
-JavaRuntimeConstantPoolTests JavaRuntimeConstantPoolTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
 JavaStringRef2 JavaStringRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaTestsResource JavaTestsResource stx:libjava 'Languages-Java-Tests' 2
 JavaUnhandledExceptionError JavaUnhandledExceptionError stx:libjava 'Languages-Java-Support' 1
 JavaUnhandledThreadDeathError JavaUnhandledThreadDeathError stx:libjava 'Languages-Java-Support' 1
 JavaUnresolvedClassConstant JavaUnresolvedClassConstant stx:libjava 'Languages-Java-Reader-Support' 0
@@ -139,7 +110,6 @@
 ProxyMethodGuardNode ProxyMethodGuardNode stx:libjava 'System-Compiler-Interop' 0
 ProxyMethodInvocationNode ProxyMethodInvocationNode stx:libjava 'System-Compiler-Interop' 0
 ProxyMethodJavaFieldAccessor ProxyMethodJavaFieldAccessor stx:libjava 'Languages-Java-Interop' 0
-TestletTestCaseProxy TestletTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
 JavaAlienMirror JavaAlienMirror stx:libjava 'Languages-Java-Classes' 0
 JavaArrayMirror JavaArrayMirror stx:libjava 'Languages-Java-Classes' 0
 JavaByteCodePreresolver JavaByteCodePreresolver stx:libjava 'Languages-Java-Bytecode' 0
@@ -169,3 +139,33 @@
 ProxyMethodJavaTypeCheckNode ProxyMethodJavaTypeCheckNode stx:libjava 'Languages-Java-Interop' 0
 JavaNativeMethod JavaNativeMethod stx:libjava 'Languages-Java-Classes' 0
 JavaNativeMethodImpl_OracleJDK8 JavaNativeMethodImpl_OracleJDK8 stx:libjava 'Languages-Java-Support-Java 8' 0
+GroovyEvaluatorTests GroovyEvaluatorTests stx:libjava 'Languages-Groovy-Tests' 1
+JUnitTestCaseProxy JUnitTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
+JavaAntProjectResource JavaAntProjectResource stx:libjava 'Languages-Java-Tests' 2
+JavaByteCodeDisassemblerTests JavaByteCodeDisassemblerTests stx:libjava 'Languages-Java-Tests' 1
+JavaByteCodeProcessorTests JavaByteCodeProcessorTests stx:libjava 'Languages-Java-Tests' 1
+JavaClassLoadingTests JavaClassLoadingTests stx:libjava 'Languages-Java-Tests-ClassLoading' 1
+JavaClassReaderTests JavaClassReaderTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaClassRefTests JavaClassRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaClassReloaderTests JavaClassReloaderTests stx:libjava 'Languages-Java-Tests-ClassReloading' 1
+JavaExceptionTests JavaExceptionTests stx:libjava 'Languages-Java-Tests' 1
+JavaFieldRefTests JavaFieldRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaFreshlyInitializedResource JavaFreshlyInitializedResource stx:libjava 'Languages-Java-Tests' 1
+JavaInitializedResource JavaInitializedResource stx:libjava 'Languages-Java-Tests' 1
+JavaInterfaceMethodRefTests JavaInterfaceMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaJUnitTests JavaJUnitTests stx:libjava 'Languages-Java-Tests-Libraries' 1
+JavaLibrariesResource JavaLibrariesResource stx:libjava 'Languages-Java-Tests' 1
+JavaLookupResolutionAlgorithmTests JavaLookupResolutionAlgorithmTests stx:libjava 'Languages-Java-Tests-Interop' 1
+JavaLookupTests JavaLookupTests stx:libjava 'Languages-Java-Tests-Interop' 1
+JavaMethodRefTests JavaMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaMonitorsTests JavaMonitorsTests stx:libjava 'Languages-Java-Tests' 1
+JavaNativeMemoryTests JavaNativeMemoryTests stx:libjava 'Languages-Java-Tests' 1
+JavaRefMock JavaRefMock stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 0
+JavaRefsAndConstantPoolTestCase JavaRefsAndConstantPoolTestCase stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaReleaseTests JavaReleaseTests stx:libjava 'Languages-Java-Tests' 1
+JavaRuntimeConstantPoolTests JavaRuntimeConstantPoolTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaTestCaseProxy JavaTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
+JavaTestsResource JavaTestsResource stx:libjava 'Languages-Java-Tests' 2
+JavaThreadingTests JavaThreadingTests stx:libjava 'Languages-Java-Tests' 1
+JavaUTF8Tests JavaUTF8Tests stx:libjava 'Languages-Java-Tests' 1
+TestletTestCaseProxy TestletTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
--- a/bc.mak	Tue Mar 17 20:56:13 2015 +0000
+++ b/bc.mak	Thu Mar 19 17:27:21 2015 +0000
@@ -59,18 +59,18 @@
 
 
 
+java_clean:
+	ant -f java\build.xml clean
+
+clean:: java_clean
+
+
 java_compile:
 	ant -f java\build.xml compile
 
 ALL:: java_compile
 
 
-java_clean:
-	ant -f java\build.xml clean
-
-clean:: java_clean
-
-
 $(ZLIB):
 	cd $(ZLIB_DIR)
 	$(MAKE) $(MAKE_ZLIB_ARG) $(ZLIB)
--- a/stx_libjava.st	Tue Mar 17 20:56:13 2015 +0000
+++ b/stx_libjava.st	Thu Mar 19 17:27:21 2015 +0000
@@ -145,7 +145,10 @@
 referencedPreRequisites
     "list packages which are a prerequisite, because they contain
      classes which are referenced by my classes.
-     We do not need these packages as a prerequisite for loading or compiling.
+     We do not need these packages as a prerequisite for compiling or loading,
+     however, a class from it may be referenced during execution and having it
+     unloaded then may lead to a runtime doesNotUnderstand error, unless the caller
+     includes explicit checks for the package being present.
      This method is generated automatically,
      by searching all classes (and their packages) which are referenced by my classes."
 
@@ -262,7 +265,6 @@
         "<className> or (<className> attributes...) in load order"
         GroovyCompiler
         GroovyEvaluator
-        (GroovyEvaluatorTests autoload)
         GroovyLanguage
         GroovySourceFileWriter
         JavaAnnotation
@@ -270,18 +272,14 @@
         JavaAnnotationDefault
         JavaAnnotationDictionary
         JavaAnnotationValue
-        (JavaAntProjectResource autoload)
         JavaArray
         JavaBooleanArray
         JavaByte
         JavaByteCodeProcessor
-        (JavaByteCodeProcessorTests autoload)
         JavaClassAccessor
         JavaClassEnvironment
-        (JavaClassLoadingTests autoload)
         JavaClassQuery
         JavaClassReloader
-        (JavaClassReloaderTests autoload)
         JavaCodeLibraryOrBundle
         JavaCompilerForSmalltalkExtensionsOnly
         #'JavaCompiler_Eclipse'
@@ -292,47 +290,33 @@
         JavaDescriptor
         JavaError
         JavaExceptionTable
-        (JavaExceptionTests autoload)
         JavaField
         JavaFinalizationRegistry
-        (JavaFreshlyInitializedResource autoload)
-        (JavaInitializedResource autoload)
         JavaInnerClasses
-        (JavaJUnitTests autoload)
         JavaLanguage
         JavaLibraries
-        (JavaLibrariesResource autoload)
         JavaLocalVariableTable
         JavaLocalVariableTableEntry
         JavaLookup
-        (JavaLookupResolutionAlgorithmTests autoload)
-        (JavaLookupTests autoload)
         JavaMetaclass
         JavaMonitor
-        (JavaMonitorsTests autoload)
         JavaNameAndType2
         JavaNativeMemory
-        (JavaNativeMemoryTests autoload)
         JavaNioSupport
         JavaObject
         JavaObjectDictionary
         JavaPopUpView
         JavaProcess
         JavaRef2
-        (JavaRefsAndConstantPoolTestCase autoload)
         JavaRelease
-        (JavaReleaseTests autoload)
         JavaResolver
         JavaShort
         JavaSlotIndexCache
         JavaSocket
         JavaSourceCodeCache
         JavaSourceFileWriter
-        (JavaTestCaseProxy autoload)
         JavaTestsLoader
-        (JavaThreadingTests autoload)
         JavaTopView
-        (JavaUTF8Tests autoload)
         JavaUnresolvedCompilationError
         JavaUnresolvedConstant
         JavaUtilities
@@ -348,7 +332,6 @@
         SmalltalkAppletStub
         #'stx_libjava'
         GroovyMetaclass
-        (JUnitTestCaseProxy autoload)
         Java
         JavaAnnotationArrayValue
         JavaAnnotationClassValue
@@ -357,15 +340,12 @@
         JavaAnnotationPrimitiveValue
         JavaBehavior
         JavaByteCodeDisassembler
-        (JavaByteCodeDisassemblerTests autoload)
         JavaByteCodeEnumerator
         JavaByteCodeProcessorAdapter
         JavaClassAnnotationContainer
         JavaClassMemberRef2
         JavaClassReader
-        (JavaClassReaderTests autoload)
         JavaClassRef2
-        (JavaClassRefTests autoload)
         JavaClassRegistry
         JavaCodeBundle
         JavaCodeLibrary
@@ -373,22 +353,16 @@
         JavaFieldAnnotationContainer
         JavaFieldDescriptor
         JavaFieldDescriptorWithUnionType
-        (JavaFieldRefTests autoload)
-        (JavaInterfaceMethodRefTests autoload)
         JavaInvalidRefError
         JavaInvokeDynamic2
         JavaMethod
         JavaMethodAnnotationContainer
         JavaMethodDescriptor
         JavaMethodHandle2
-        (JavaMethodRefTests autoload)
         JavaMethodType2
         JavaMirror
         #'JavaNativeMethodImpl_OpenJDK6'
-        (JavaRefMock autoload)
-        (JavaRuntimeConstantPoolTests autoload)
         JavaStringRef2
-        (JavaTestsResource autoload)
         JavaUnhandledExceptionError
         JavaUnhandledThreadDeathError
         JavaUnresolvedClassConstant
@@ -398,7 +372,6 @@
         ProxyMethodGuardNode
         ProxyMethodInvocationNode
         ProxyMethodJavaFieldAccessor
-        (TestletTestCaseProxy autoload)
         JavaAlienMirror
         JavaArrayMirror
         JavaByteCodePreresolver
@@ -428,6 +401,36 @@
         ProxyMethodJavaTypeCheckNode
         JavaNativeMethod
         #'JavaNativeMethodImpl_OracleJDK8'
+        (GroovyEvaluatorTests autoload)
+        (JUnitTestCaseProxy autoload)
+        (JavaAntProjectResource autoload)
+        (JavaByteCodeDisassemblerTests autoload)
+        (JavaByteCodeProcessorTests autoload)
+        (JavaClassLoadingTests autoload)
+        (JavaClassReaderTests autoload)
+        (JavaClassRefTests autoload)
+        (JavaClassReloaderTests autoload)
+        (JavaExceptionTests autoload)
+        (JavaFieldRefTests autoload)
+        (JavaFreshlyInitializedResource autoload)
+        (JavaInitializedResource autoload)
+        (JavaInterfaceMethodRefTests autoload)
+        (JavaJUnitTests autoload)
+        (JavaLibrariesResource autoload)
+        (JavaLookupResolutionAlgorithmTests autoload)
+        (JavaLookupTests autoload)
+        (JavaMethodRefTests autoload)
+        (JavaMonitorsTests autoload)
+        (JavaNativeMemoryTests autoload)
+        (JavaRefMock autoload)
+        (JavaRefsAndConstantPoolTestCase autoload)
+        (JavaReleaseTests autoload)
+        (JavaRuntimeConstantPoolTests autoload)
+        (JavaTestCaseProxy autoload)
+        (JavaTestsResource autoload)
+        (JavaThreadingTests autoload)
+        (JavaUTF8Tests autoload)
+        (TestletTestCaseProxy autoload)
     )
 !
 
--- a/tools/JavaCodeBundleEditor.st	Tue Mar 17 20:56:13 2015 +0000
+++ b/tools/JavaCodeBundleEditor.st	Thu Mar 19 17:27:21 2015 +0000
@@ -1,5 +1,9 @@
+"{ Encoding: utf8 }"
+
 "{ Package: 'stx:libjava/tools' }"
 
+"{ NameSpace: Smalltalk }"
+
 ApplicationModel subclass:#JavaCodeBundleEditor
 	instanceVariableNames:'bundleHolder readonlyHolder bundleTree bundleTreeSelectionHolder'
 	classVariableNames:''
@@ -7,8 +11,15 @@
 	category:'Languages-Java-Tools'
 !
 
-HierarchicalItem subclass:#Item
-	instanceVariableNames:'libraryOrBundle'
+HierarchicalItem subclass:#BundleItem
+	instanceVariableNames:'bundle'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:JavaCodeBundleEditor
+!
+
+HierarchicalItem subclass:#LibraryItem
+	instanceVariableNames:'library warnings label'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:JavaCodeBundleEditor
@@ -372,13 +383,15 @@
 
 updateTree
     self bundleTree root notNil ifTrue:[
-        self bundleTree removeAll; root: nil.
+        (self bundleTree)
+            removeAll;
+            root:nil.
     ].
-    self bundleTree root: (Item libraryOrBundle: self bundleHolder value parent: nil).
+    self bundleTree root:(BundleItem bundle:self bundleHolder value parent:nil).
     self bundleTree root expand.
 
     "Created: / 25-01-2013 / 21:40:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 22-02-2013 / 14:01:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 19-03-2015 / 13:14:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaCodeBundleEditor methodsFor:'hooks'!
@@ -447,15 +460,19 @@
 !
 
 doEdit
-    | bundleOrLibrary dialog name |
+    | bundleOrLibraryItem bundleOrLibrary dialog name |
 
-    bundleOrLibrary := self bundleTreeSelectionHolder value.
-    bundleOrLibrary isNil ifTrue:[ ^ self ].
-    bundleOrLibrary := bundleOrLibrary libraryOrBundle.
+    bundleOrLibraryItem := self bundleTreeSelectionHolder value.
+    bundleOrLibraryItem isNil ifTrue:[ ^ self ].
+    bundleOrLibrary := bundleOrLibraryItem libraryOrBundle.
     bundleOrLibrary isLibrary ifTrue:[
         dialog := JavaCodeLibraryEditor new.
         dialog library: bundleOrLibrary.
         dialog open.
+        bundleOrLibrary isLibrary ifTrue:[ 
+            "/ To get rid ow warnings if fixed or revalidate
+            bundleOrLibraryItem updateWarnings.
+        ].   
     ] ifFalse:[
         name := Dialog request: (resources string: 'Enter new name') initialAnswer:bundleOrLibrary name.
         name isNil ifTrue:[^self].
@@ -463,7 +480,7 @@
 
     ]
 
-    "Modified: / 21-02-2013 / 23:41:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-03-2015 / 16:27:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 doRemove
@@ -498,17 +515,15 @@
     "Created: / 22-02-2013 / 15:36:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!JavaCodeBundleEditor::Item class methodsFor:'instance creation'!
+!JavaCodeBundleEditor::BundleItem class methodsFor:'instance creation'!
 
-libraryOrBundle: model parent: parent
-    ^self new
-        libraryOrBundle: model;
-        parent: parent
+bundle: bundle parent: parent
+    ^self new setBundle: bundle parent: parent
 
-    "Created: / 25-01-2013 / 21:53:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 19-03-2015 / 13:04:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!JavaCodeBundleEditor::Item methodsFor:'accessing'!
+!JavaCodeBundleEditor::BundleItem methodsFor:'accessing'!
 
 icon
     ^nil
@@ -517,34 +532,24 @@
 !
 
 label
-    ^libraryOrBundle displayString
+    ^bundle displayString
 
     "Created: / 25-01-2013 / 21:41:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 15-04-2014 / 18:57:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 libraryOrBundle
-    ^ libraryOrBundle
-!
+    ^ bundle
 
-libraryOrBundle:aJavaCodeLibraryOrBundle
-    libraryOrBundle notNil ifTrue:[
-        libraryOrBundle removeDependent: self
-    ].
-    libraryOrBundle := aJavaCodeLibraryOrBundle.
-    libraryOrBundle notNil ifTrue:[
-        libraryOrBundle addDependent: self
-    ].
-
-    "Modified: / 22-02-2013 / 15:19:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 19-03-2015 / 13:15:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!JavaCodeBundleEditor::Item methodsFor:'change & update'!
+!JavaCodeBundleEditor::BundleItem methodsFor:'change & update'!
 
 update:aspect with: parameter from:changedObject
     "Invoked when an object that I depend upon sends a change notification."
 
-    changedObject == libraryOrBundle ifTrue:[
+    changedObject == bundle ifTrue:[
         self updateChildren.
         ^ self.
     ].
@@ -560,34 +565,128 @@
         self children: self fetchChildren.
         ^self.
     ].
-    libraryOrBundle isLibrary ifTrue:[ ^ self ].
+    bundle isLibrary ifTrue:[ ^ self ].
 
 
     oldChildren := children copy.
     newChildren := OrderedCollection new.
-    libraryOrBundle libraries do:[:e|
+    bundle libraries do:[:each|
         | item |
 
         item := oldChildren 
-                detect:[:item|item libraryOrBundle == e] 
-                ifNone:[self class libraryOrBundle:e parent: self].
+                detect:[:item|item libraryOrBundle == each] 
+                ifNone:[each isLibrary 
+                            ifTrue:[ JavaCodeBundleEditor::LibraryItem library:each parent: self] 
+                            ifFalse: [ JavaCodeBundleEditor::BundleItem bundle:each parent: self] ].
         newChildren add: item.
     ].
     self children: newChildren
 
     "Created: / 22-02-2013 / 15:20:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-03-2015 / 16:26:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!JavaCodeBundleEditor::Item methodsFor:'protocol-accessing'!
+!JavaCodeBundleEditor::BundleItem methodsFor:'initialization'!
+
+setBundle: aJavaCodeBundle parent: aBundleItem
+    bundle := aJavaCodeBundle.
+    bundle addDependent: self.
+    parent := aBundleItem.
+
+    "Created: / 19-03-2015 / 13:05:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaCodeBundleEditor::BundleItem methodsFor:'protocol-accessing'!
 
 fetchChildren
-    ^libraryOrBundle isBundle ifTrue:[
-        libraryOrBundle libraries collect:[:each|self class libraryOrBundle:each parent: self]. 
-    ] ifFalse:[
-        #()
+    ^ bundle libraries collect:[:each| 
+        each isLibrary 
+            ifTrue:[ JavaCodeBundleEditor::LibraryItem library:each parent: self] 
+            ifFalse: [ JavaCodeBundleEditor::BundleItem bundle:each parent: self] 
     ]
 
     "Created: / 25-01-2013 / 21:52:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-03-2015 / 16:26:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaCodeBundleEditor::LibraryItem class methodsFor:'instance creation'!
+
+library: model parent: parent
+    ^self new setLibrary: model parent: parent
+
+    "Created: / 19-03-2015 / 13:06:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaCodeBundleEditor::LibraryItem methodsFor:'accessing'!
+
+icon
+    ^nil
+
+    "Created: / 25-01-2013 / 21:51:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+label
+    | resources |
+
+    label isNil ifTrue:[
+        resources := self class classResources.
+        warnings isNil ifTrue:[ self updateWarnings ].
+
+        label := library name.          
+        warnings isEmpty ifTrue:[ 
+            library sources isNil ifTrue:[ 
+                label := label , ((' (', (resources string: 'no sources') , ')') asText colorizeAllWith: Color gray)
+            ].
+        ] ifFalse:[ 
+            label := label , (' (', (warnings size == 1 ifTrue:[resources string: '1 warning'] ifFalse:[resources string: '%1 warnings' with: warnings size]) , ')').
+            label := label colorizeAllWith: Color red.
+        ].
+    ].
+    ^ label
+
+    "Created: / 25-01-2013 / 21:41:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-03-2015 / 16:22:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+libraryOrBundle
+    ^ library
+
+    "Created: / 19-03-2015 / 13:15:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaCodeBundleEditor::LibraryItem methodsFor:'initialization'!
+
+setLibrary: aJavaCodeLibrary parent: aBundleItem
+    library := aJavaCodeLibrary.
+    parent := aBundleItem.
+
+    "Created: / 19-03-2015 / 13:06:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-03-2015 / 16:20:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaCodeBundleEditor::LibraryItem methodsFor:'private'!
+
+updateWarnings
+
+    warnings := OrderedCollection new.
+    [ 
+        library validate
+    ] on: JavaCodeLibraryValidationWarning do:[:warning | 
+        warnings add: warning.
+        warning proceed.
+    ].
+    label := nil.
+
+    "Created: / 19-03-2015 / 16:20:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaCodeBundleEditor::LibraryItem methodsFor:'protocol-accessing'!
+
+fetchChildren
+    ^ #()
+
+    "Created: / 25-01-2013 / 21:52:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-03-2015 / 13:07:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaCodeBundleEditor class methodsFor:'documentation'!
--- a/tools/JavaCodeLibraryEditor.st	Tue Mar 17 20:56:13 2015 +0000
+++ b/tools/JavaCodeLibraryEditor.st	Thu Mar 19 17:27:21 2015 +0000
@@ -1,5 +1,9 @@
+"{ Encoding: utf8 }"
+
 "{ Package: 'stx:libjava/tools' }"
 
+"{ NameSpace: Smalltalk }"
+
 SimpleDialog subclass:#JavaCodeLibraryEditor
 	instanceVariableNames:'readonlyHolder library infoPanel nameHolder classesHolder
 		sourcesHolder acceptEnabledHolder nameIsDefault'
@@ -411,6 +415,7 @@
     self validate
 
     "Created: / 21-02-2013 / 19:06:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-03-2015 / 16:30:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaCodeLibraryEditor methodsFor:'initialization'!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/JavaCodeLibraryValidationWarning.st	Thu Mar 19 17:27:21 2015 +0000
@@ -0,0 +1,261 @@
+"{ Encoding: utf8 }"
+
+"{ Package: 'stx:libjava/tools' }"
+
+"{ NameSpace: Smalltalk }"
+
+Warning subclass:#JavaCodeLibraryValidationWarning
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Languages-Java-Support-Libraries'
+!
+
+JavaCodeLibraryValidationWarning subclass:#ClassesArchiveInvalid
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:JavaCodeLibraryValidationWarning
+!
+
+JavaCodeLibraryValidationWarning subclass:#ClassesDontExist
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:JavaCodeLibraryValidationWarning
+!
+
+JavaCodeLibraryValidationWarning subclass:#ClassesNotSpecified
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:JavaCodeLibraryValidationWarning
+!
+
+JavaCodeLibraryValidationWarning subclass:#JavaDocArchiveInvalid
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:JavaCodeLibraryValidationWarning
+!
+
+JavaCodeLibraryValidationWarning subclass:#JavaDocDoesntExist
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:JavaCodeLibraryValidationWarning
+!
+
+JavaCodeLibraryValidationWarning subclass:#SourcesArchiveInvalid
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:JavaCodeLibraryValidationWarning
+!
+
+JavaCodeLibraryValidationWarning subclass:#SourcesDontExist
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:JavaCodeLibraryValidationWarning
+!
+
+!JavaCodeLibraryValidationWarning class methodsFor:'documentation'!
+
+documentation
+"
+    A base superclass for JavaCodeLibrary validation warnings.
+    See documentation of my private sublcasses for different
+    kinds of warnings.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+        JavaCodeLibrary>>validate
+
+"
+! !
+
+!JavaCodeLibraryValidationWarning class methodsFor:'accessing'!
+
+classesArchiveInvalid
+    ^ ClassesArchiveInvalid
+
+    "Created: / 19-03-2015 / 11:52:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+classesDontExist
+    ^ ClassesDontExist
+
+    "Created: / 19-03-2015 / 11:52:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+classesNotSpecified
+    ^ ClassesNotSpecified
+
+    "Created: / 19-03-2015 / 11:52:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+javaDoArchiveInvalid
+    ^ JavaDocArchiveInvalid
+
+    "Created: / 19-03-2015 / 11:54:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+javaDocDontExist
+    ^ JavaDocDoesntExist
+
+    "Created: / 19-03-2015 / 11:53:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+sourcesArchiveInvalid
+    ^ SourcesArchiveInvalid
+
+    "Created: / 19-03-2015 / 11:52:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+sourcesDontExist
+    ^ SourcesDontExist
+
+    "Created: / 19-03-2015 / 11:53:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaCodeLibraryValidationWarning methodsFor:'accessing'!
+
+library
+    ^ parameter
+
+    "Created: / 19-03-2015 / 14:22:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaCodeLibraryValidationWarning::ClassesArchiveInvalid class methodsFor:'documentation'!
+
+documentation
+"
+    documentation to be added.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!JavaCodeLibraryValidationWarning::ClassesDontExist class methodsFor:'documentation'!
+
+documentation
+"
+    documentation to be added.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!JavaCodeLibraryValidationWarning::ClassesNotSpecified class methodsFor:'documentation'!
+
+documentation
+"
+    documentation to be added.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!JavaCodeLibraryValidationWarning::JavaDocArchiveInvalid class methodsFor:'documentation'!
+
+documentation
+"
+    documentation to be added.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!JavaCodeLibraryValidationWarning::JavaDocDoesntExist class methodsFor:'documentation'!
+
+documentation
+"
+    documentation to be added.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!JavaCodeLibraryValidationWarning::SourcesArchiveInvalid class methodsFor:'documentation'!
+
+documentation
+"
+    documentation to be added.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!JavaCodeLibraryValidationWarning::SourcesDontExist class methodsFor:'documentation'!
+
+documentation
+"
+    documentation to be added.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
--- a/tools/Make.proto	Tue Mar 17 20:56:13 2015 +0000
+++ b/tools/Make.proto	Thu Mar 19 17:27:21 2015 +0000
@@ -169,6 +169,7 @@
 $(OUTDIR)JavaAbstractSourceHighlighter.$(O) JavaAbstractSourceHighlighter.$(H): JavaAbstractSourceHighlighter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaCodeBundleEditor.$(O) JavaCodeBundleEditor.$(H): JavaCodeBundleEditor.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)JavaCodeLibraryEditor.$(O) JavaCodeLibraryEditor.$(H): JavaCodeLibraryEditor.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libview2/SimpleDialog.$(H) $(STCHDR)
+$(OUTDIR)JavaCodeLibraryValidationWarning.$(O) JavaCodeLibraryValidationWarning.$(H): JavaCodeLibraryValidationWarning.st $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/Warning.$(H) $(STCHDR)
 $(OUTDIR)JavaCompiler.$(O) JavaCompiler.$(H): JavaCompiler.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaLintAnnotation.$(O) JavaLintAnnotation.$(H): JavaLintAnnotation.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaLintHighlighter.$(O) JavaLintHighlighter.$(H): JavaLintHighlighter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -189,7 +190,7 @@
 $(OUTDIR)GroovyScanner.$(O) GroovyScanner.$(H): GroovyScanner.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaScanner.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaScannerBase.$(H) $(STCHDR)
 $(OUTDIR)JavaLexicalHighlighter.$(O) JavaLexicalHighlighter.$(H): JavaLexicalHighlighter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaAbstractLexicalHighlighter.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaAbstractSourceHighlighter.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaScanner.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaScannerBase.$(H) $(STCHDR)
 $(OUTDIR)GroovySourceHighlighter.$(O) GroovySourceHighlighter.$(H): GroovySourceHighlighter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/tools/GroovyScanner.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaScanner.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaScannerBase.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/ConfigurableFeatures.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/JavaObject.$(H) $(INCLUDE_TOP)/stx/libtool/SystemBrowser.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__NewSystemBrowser.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/ConfigurableFeatures.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/JavaCodeLibrary.$(H) $(INCLUDE_TOP)/stx/libjava/JavaCodeLibraryOrBundle.$(H) $(INCLUDE_TOP)/stx/libjava/JavaObject.$(H) $(INCLUDE_TOP)/stx/libtool/SystemBrowser.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__NewSystemBrowser.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/tools/Make.spec	Tue Mar 17 20:56:13 2015 +0000
+++ b/tools/Make.spec	Thu Mar 19 17:27:21 2015 +0000
@@ -54,6 +54,7 @@
 	JavaAbstractSourceHighlighter \
 	JavaCodeBundleEditor \
 	JavaCodeLibraryEditor \
+	JavaCodeLibraryValidationWarning \
 	JavaCompiler \
 	JavaLintAnnotation \
 	JavaLintHighlighter \
@@ -82,6 +83,7 @@
     $(OUTDIR_SLASH)JavaAbstractSourceHighlighter.$(O) \
     $(OUTDIR_SLASH)JavaCodeBundleEditor.$(O) \
     $(OUTDIR_SLASH)JavaCodeLibraryEditor.$(O) \
+    $(OUTDIR_SLASH)JavaCodeLibraryValidationWarning.$(O) \
     $(OUTDIR_SLASH)JavaCompiler.$(O) \
     $(OUTDIR_SLASH)JavaLintAnnotation.$(O) \
     $(OUTDIR_SLASH)JavaLintHighlighter.$(O) \
--- a/tools/abbrev.stc	Tue Mar 17 20:56:13 2015 +0000
+++ b/tools/abbrev.stc	Thu Mar 19 17:27:21 2015 +0000
@@ -4,6 +4,7 @@
 JavaAbstractSourceHighlighter JavaAbstractSourceHighlighter stx:libjava/tools 'Languages-Java-Tools-Source' 0
 JavaCodeBundleEditor JavaCodeBundleEditor stx:libjava/tools 'Languages-Java-Tools' 1
 JavaCodeLibraryEditor JavaCodeLibraryEditor stx:libjava/tools 'Languages-Java-Tools' 1
+JavaCodeLibraryValidationWarning JavaCodeLibraryValidationWarning stx:libjava/tools 'Languages-Java-Support-Libraries' 1
 JavaCompiler JavaCompiler stx:libjava/tools 'Languages-Java-Support-Compiling' 0
 JavaCompilerTests JavaCompilerTests stx:libjava/tools 'Languages-Java-Tests-Compiling' 1
 JavaLintAnnotation JavaLintAnnotation stx:libjava/tools 'Languages-Java-Tools-Editor-Lint' 0
--- a/tools/bc.mak	Tue Mar 17 20:56:13 2015 +0000
+++ b/tools/bc.mak	Thu Mar 19 17:27:21 2015 +0000
@@ -67,18 +67,18 @@
 
 
 
+java_clean:
+	ant -f java\build.xml clean
+
+clean:: java_clean
+
+
 java_compile:
 	ant -f java\build.xml compile
 
 ALL:: java_compile
 
 
-java_clean:
-	ant -f java\build.xml clean
-
-clean:: java_clean
-
-
 
 
 
@@ -94,6 +94,7 @@
 $(OUTDIR)JavaAbstractSourceHighlighter.$(O) JavaAbstractSourceHighlighter.$(H): JavaAbstractSourceHighlighter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaCodeBundleEditor.$(O) JavaCodeBundleEditor.$(H): JavaCodeBundleEditor.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)JavaCodeLibraryEditor.$(O) JavaCodeLibraryEditor.$(H): JavaCodeLibraryEditor.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libview2\SimpleDialog.$(H) $(STCHDR)
+$(OUTDIR)JavaCodeLibraryValidationWarning.$(O) JavaCodeLibraryValidationWarning.$(H): JavaCodeLibraryValidationWarning.st $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\Warning.$(H) $(STCHDR)
 $(OUTDIR)JavaCompiler.$(O) JavaCompiler.$(H): JavaCompiler.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaLintAnnotation.$(O) JavaLintAnnotation.$(H): JavaLintAnnotation.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaLintHighlighter.$(O) JavaLintHighlighter.$(H): JavaLintHighlighter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -114,7 +115,7 @@
 $(OUTDIR)GroovyScanner.$(O) GroovyScanner.$(H): GroovyScanner.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaScanner.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaScannerBase.$(H) $(STCHDR)
 $(OUTDIR)JavaLexicalHighlighter.$(O) JavaLexicalHighlighter.$(H): JavaLexicalHighlighter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaAbstractLexicalHighlighter.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaAbstractSourceHighlighter.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaScanner.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaScannerBase.$(H) $(STCHDR)
 $(OUTDIR)GroovySourceHighlighter.$(O) GroovySourceHighlighter.$(H): GroovySourceHighlighter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\tools\GroovyScanner.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaScanner.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaScannerBase.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\ConfigurableFeatures.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\JavaObject.$(H) $(INCLUDE_TOP)\stx\libtool\SystemBrowser.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__NewSystemBrowser.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\ConfigurableFeatures.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\JavaCodeLibrary.$(H) $(INCLUDE_TOP)\stx\libjava\JavaCodeLibraryOrBundle.$(H) $(INCLUDE_TOP)\stx\libjava\JavaObject.$(H) $(INCLUDE_TOP)\stx\libtool\SystemBrowser.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__NewSystemBrowser.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/tools/extensions.st	Tue Mar 17 20:56:13 2015 +0000
+++ b/tools/extensions.st	Thu Mar 19 17:27:21 2015 +0000
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
 "{ Package: 'stx:libjava/tools' }"!
 
 !ConfigurableFeatures class methodsFor:'queries-features'!
@@ -34,6 +36,77 @@
     "Created: / 18-02-2012 / 16:44:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!JavaCodeLibrary methodsFor:'validating'!
+
+validate
+    "Validate this Java library and raise validation warning for each
+     problem. A caller may give up upon first problem of proceed to collect
+     all warnings."
+
+    classes isNil ifTrue:[ 
+        JavaCodeLibraryValidationError classesNotSpecified newException
+            messageText: 'No classes specified';
+            parameter: self;
+            raiseRequest
+    ] ifFalse:[ 
+        | classesFile |
+
+        classesFile := classes asFilename.
+        classesFile exists ifTrue:[ 
+            (classesFile isRegularFile and:[(ZipArchive isZipArchive: classes) not]) ifTrue:[
+                JavaCodeLibraryValidationWarning classesArchiveInvalid newException
+                    messageText: 'Classes archive is not a valid .jar / .zip archive: ', classes;
+                    parameter: self;
+                    raiseRequest
+            ]
+        ] ifFalse:[ 
+            JavaCodeLibraryValidationWarning classesDontExist newException
+                messageText: ('Classes doesn''t exist: ' , classes);
+                parameter: self;
+                raiseRequest
+        ].
+    ].
+    sources notNil ifTrue:[
+        | sourcesFile |
+
+        sourcesFile := sources asFilename.
+        sourcesFile exists ifTrue:[ 
+            (sourcesFile isRegularFile and:[(ZipArchive isZipArchive: sources) not]) ifTrue:[
+                JavaCodeLibraryValidationWarning sourcesArchiveInvalid newException
+                    messageText: 'Sources archive is not a valid .jar / .zip archive: ' , sources;
+                    parameter: self;
+                    raiseRequest
+            ]
+        ] ifFalse:[ 
+            JavaCodeLibraryValidationWarning sourcesDontExist newException
+                messageText: ('Sources dont exist: ' , sources);
+                parameter: self;
+                raiseRequest
+        ].
+    ].         
+    javadoc notNil ifTrue:[
+        | javadocFile |
+
+        javadocFile := javadoc asFilename.
+        javadocFile exists ifTrue:[ 
+            (javadocFile isRegularFile and:[(ZipArchive isZipArchive: sources) not]) ifTrue:[
+                JavaCodeLibraryValidationWarning sourcesArchiveInvalid newException
+                    messageText: 'JavaDoc archive is not a valid .zip archive: ' , javadoc;
+                    parameter: self;
+                    raiseRequest
+            ]
+        ] ifFalse:[ 
+            JavaCodeLibraryValidationWarning sourcesDontExist newException
+                messageText: ('JavaDoc doesnt exist: ' , javadoc);
+                parameter: self;
+                raiseRequest
+        ].
+    ].
+
+    "Created: / 19-03-2015 / 11:58:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-03-2015 / 14:53:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !JavaObject methodsFor:'inspecting'!
 
 inspectorClass
--- a/tools/libInit.cc	Tue Mar 17 20:56:13 2015 +0000
+++ b/tools/libInit.cc	Thu Mar 19 17:27:21 2015 +0000
@@ -30,6 +30,7 @@
 _JavaAbstractSourceHighlighter_Init(pass,__pRT__,snd);
 _JavaCodeBundleEditor_Init(pass,__pRT__,snd);
 _JavaCodeLibraryEditor_Init(pass,__pRT__,snd);
+_JavaCodeLibraryValidationWarning_Init(pass,__pRT__,snd);
 _JavaCompiler_Init(pass,__pRT__,snd);
 _JavaLintAnnotation_Init(pass,__pRT__,snd);
 _JavaLintHighlighter_Init(pass,__pRT__,snd);
--- a/tools/stx_libjava_tools.st	Tue Mar 17 20:56:13 2015 +0000
+++ b/tools/stx_libjava_tools.st	Thu Mar 19 17:27:21 2015 +0000
@@ -35,18 +35,21 @@
 
     ^ #(
         #'stx:libbasic'    "ConfigurableFeatures - extended"
-        #'stx:libjava'    "JavaObject - extended"
+        #'stx:libjava'    "JavaCodeLibrary - extended"
         #'stx:libtool'    "AbstractSettingsApplication - superclass of JavaSettingsApplication"
         #'stx:libview'    "DisplaySurface - superclass of JavaListInspectorView"
         #'stx:libview2'    "ApplicationModel - extended"
-        #'stx:libwidg2'    "HierarchicalItem - superclass of JavaCodeBundleEditor::Item"
+        #'stx:libwidg2'    "HierarchicalItem - superclass of JavaCodeBundleEditor::BundleItem"
     )
 !
 
 referencedPreRequisites
     "list packages which are a prerequisite, because they contain
      classes which are referenced by my classes.
-     We do not need these packages as a prerequisite for loading or compiling.
+     We do not need these packages as a prerequisite for compiling or loading,
+     however, a class from it may be referenced during execution and having it
+     unloaded then may lead to a runtime doesNotUnderstand error, unless the caller
+     includes explicit checks for the package being present.
      This method is generated automatically,
      by searching all classes (and their packages) which are referenced by my classes."
 
@@ -79,6 +82,7 @@
         JavaAbstractSourceHighlighter
         JavaCodeBundleEditor
         JavaCodeLibraryEditor
+        JavaCodeLibraryValidationWarning
         JavaCompiler
         (JavaCompilerTests autoload)
         JavaLintAnnotation
@@ -112,6 +116,7 @@
         #'Tools::NewSystemBrowser' classMenuNewGroovyClass
         'ConfigurableFeatures class' hasGroovySupport
         'ConfigurableFeatures class' hasJavaToolingSupport
+        JavaCodeLibrary validate
     )
 ! !