Source dependent = symbolTable.findSourceByQName((QName) name);
if ((dependent != null) && dependent.isSwcScriptOwner())
{
SwcScript swcScript = (SwcScript) dependent.getOwner();
Swc swc = swcScript.getLibrary().getSwc();
// Make sure each dependency's minimum
// supported version is less than or equal to
// the compatibility version.
if (highestMinimumSupportedVersion < swc.getVersions().getMinimumVersion() &&
configuration.getCompilerConfiguration().enableSwcVersionFiltering())
{
highestMinimumSupportedVersion = swc.getVersions().getMinimumVersion();
if (isMinimumSupportedVersionConfigured &&
configuration.getMinimumSupportedVersion() < highestMinimumSupportedVersion)
{
HigherMinimumSupportedVersionRequired message =
new HigherMinimumSupportedVersionRequired(swc.getLocation(),
swc.getVersions().getMinimumVersionString());
ThreadLocalToolkit.log(message, u.getSource());
}
}
}
}
}
// Warn about linked in dependent SWC's, which have style
// defaults. Linking in dependent SWC's pulls in
// definitions without their associated style defaults and
// their dependencies. This can lead to missing skins at
// runtime for applications, which compile against the
// output SWC. Merging the style defaults isn't enough,
// because styles can bring in additional dependencies, so
// in order to get a complete dependency set, we would
// have to compile the style defaults and our current
// design requires deferring that until application
// compile time. Therefore the best option is to
// recommend that the user put the dependent SWC in the
// external-library-path of the output SWC compilation and
// in the library-path of downstream application
// compilations.
Source source = u.getSource();
if (source.isSwcScriptOwner() &&
!PreLink.isCompilationUnitExternal(u, externs) &&
!source.isInternal() && !hidePotentialMissingSkinsWarning)
{
SwcScript swcScript = (SwcScript) source.getOwner();
Swc swc = swcScript.getLibrary().getSwc();
String location = swc.getLocation();
if (!processedSwcs.contains(location))
{
processedSwcs.add(location);
boolean foundDefaultsCss = false;
for (VirtualFile catalogFile : swc.getCatalogFiles().values())
{
String catalogFileName = catalogFile.getName();
int dollarSignIndex = catalogFileName.indexOf("$");
if ((dollarSignIndex != -1) &&
catalogFileName.startsWith(DEFAULTS, dollarSignIndex + 1) &&
catalogFileName.endsWith(DOT_CSS))
{
foundDefaultsCss = true;
}
}
if (foundDefaultsCss)
{
PotentialForMissingSkins message = new PotentialForMissingSkins(swc.getLocation());
ThreadLocalToolkit.log(message);
}
}
}
}