Lines 49-54
Link Here
|
49 |
import org.eclipse.osgi.service.resolver.VersionRange; |
49 |
import org.eclipse.osgi.service.resolver.VersionRange; |
50 |
import org.eclipse.osgi.util.ManifestElement; |
50 |
import org.eclipse.osgi.util.ManifestElement; |
51 |
import org.eclipse.osgi.util.NLS; |
51 |
import org.eclipse.osgi.util.NLS; |
|
|
52 |
import org.eclipse.pde.core.build.IBuild; |
52 |
import org.eclipse.pde.core.plugin.IFragmentModel; |
53 |
import org.eclipse.pde.core.plugin.IFragmentModel; |
53 |
import org.eclipse.pde.core.plugin.IPluginBase; |
54 |
import org.eclipse.pde.core.plugin.IPluginBase; |
54 |
import org.eclipse.pde.core.plugin.IPluginModelBase; |
55 |
import org.eclipse.pde.core.plugin.IPluginModelBase; |
Lines 59-64
Link Here
|
59 |
import org.eclipse.pde.internal.core.PDECore; |
60 |
import org.eclipse.pde.internal.core.PDECore; |
60 |
import org.eclipse.pde.internal.core.PDECoreMessages; |
61 |
import org.eclipse.pde.internal.core.PDECoreMessages; |
61 |
import org.eclipse.pde.internal.core.TargetPlatformHelper; |
62 |
import org.eclipse.pde.internal.core.TargetPlatformHelper; |
|
|
63 |
import org.eclipse.pde.internal.core.build.WorkspaceBuildModel; |
62 |
import org.eclipse.pde.internal.core.ibundle.IBundle; |
64 |
import org.eclipse.pde.internal.core.ibundle.IBundle; |
63 |
import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase; |
65 |
import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase; |
64 |
import org.eclipse.pde.internal.core.ibundle.IManifestHeader; |
66 |
import org.eclipse.pde.internal.core.ibundle.IManifestHeader; |
Lines 484-494
Link Here
|
484 |
|
486 |
|
485 |
private void validateBundleClasspath() { |
487 |
private void validateBundleClasspath() { |
486 |
IHeader header = getHeader(Constants.BUNDLE_CLASSPATH); |
488 |
IHeader header = getHeader(Constants.BUNDLE_CLASSPATH); |
487 |
if (header != null && header.getElements().length == 0) { |
489 |
if (header != null) { |
488 |
report(PDECoreMessages.BundleErrorReporter_ClasspathNotEmpty, |
490 |
if (header.getElements().length == 0) { |
489 |
header.getLineNumber() + 1, CompilerFlags.ERROR, |
491 |
report(PDECoreMessages.BundleErrorReporter_ClasspathNotEmpty, |
490 |
PDEMarkerFactory.CAT_FATAL); |
492 |
header.getLineNumber() + 1, CompilerFlags.ERROR, |
|
|
493 |
PDEMarkerFactory.CAT_FATAL); |
494 |
} |
491 |
} |
495 |
} |
|
|
496 |
validateBundleClasspathMappings(header); |
497 |
} |
498 |
|
499 |
private void validateBundleClasspathMappings(IHeader header) { |
500 |
IFile buildProperties = fProject.getFile("build.properties"); //$NON-NLS-1$ |
501 |
if(buildProperties != null && buildProperties.exists()) { |
502 |
WorkspaceBuildModel wbm = |
503 |
new WorkspaceBuildModel(buildProperties); |
504 |
wbm.load(); |
505 |
if (!wbm.isLoaded()) |
506 |
return; |
507 |
|
508 |
IBuild build = wbm.getBuild(); |
509 |
if(build != null) { |
510 |
ArrayList sourceEntries = |
511 |
PDEBuilderHelper.getSourceEntries(build); |
512 |
// verify classpath entry <-> source entry mappings |
513 |
for(int i = 0; i < sourceEntries.size(); i++) { |
514 |
String entry = (String) sourceEntries.get(i); |
515 |
validateMapping(header, entry, sourceEntries.size()); |
516 |
} |
517 |
|
518 |
} |
519 |
} |
520 |
} |
521 |
|
522 |
private void validateMapping(IHeader header, String entry, int sourceEntrySize) { |
523 |
boolean match = false; |
524 |
ManifestElement[] elements = |
525 |
header != null ? header.getElements() : new ManifestElement[0]; |
526 |
for(int i = 0; i < elements.length; i++) { |
527 |
if(entry.equals(elements[i].getValue())) |
528 |
match = true; |
529 |
} |
530 |
// if we have no match, report an error |
531 |
if(!match) { |
532 |
// however, catch the case when we have a source.. entry and no Bundle-ClassPath entry |
533 |
if(entry.equals(".") && sourceEntrySize == 1) //$NON-NLS-1$ |
534 |
return; |
535 |
int line = header != null ? header.getLineNumber() + 1 : 1; |
536 |
IMarker marker = report(PDECoreMessages.BundleErrorReporter_missingClassPathEntries, |
537 |
line, |
538 |
CompilerFlags.ERROR, |
539 |
PDEMarkerFactory.M_MISSING_BUNDLE_CLASSPATH_ENTRY, |
540 |
PDEMarkerFactory.CAT_FATAL); |
541 |
try { |
542 |
if (marker != null) { |
543 |
marker.setAttribute("entry", entry); //$NON-NLS-1$ |
544 |
} |
545 |
} catch (CoreException e) {} |
546 |
} |
492 |
} |
547 |
} |
493 |
|
548 |
|
494 |
private void validateRequireBundle(IProgressMonitor monitor) { |
549 |
private void validateRequireBundle(IProgressMonitor monitor) { |