private BundleException getResolverError(BundleDescription bundleDesc) { ResolverError[] errors = framework.adaptor.getState().getResolverErrors(bundleDesc); if (errors == null || errors.length == 0) return new BundleException(NLS.bind(Msg.BUNDLE_UNRESOLVED_EXCEPTION, this.toString()), BundleException.RESOLVE_ERROR); StringBuffer message = new StringBuffer(); int errorType = BundleException.RESOLVE_ERROR; for (int i = 0; i < errors.length; i++) { if ((errors[i].getType() & ResolverError.INVALID_NATIVECODE_PATHS) != 0) errorType = BundleException.NATIVECODE_ERROR; message.append(errors[i].toString()); if (i < errors.length - 1) message.append(", "); //$NON-NLS-1$ } return new BundleException(NLS.bind(Msg.BUNDLE_UNRESOLVED_UNSATISFIED_CONSTRAINT_EXCEPTION, this.toString(), message.toString()), errorType); }
private static void getRelevantErrors(State state, Set<ResolverError> errors, BundleDescription bundle) { ResolverError[] bundleErrors = state.getResolverErrors(bundle); for (int j = 0; j < bundleErrors.length; j++) { ResolverError error = bundleErrors[j]; errors.add(error); VersionConstraint constraint = error.getUnsatisfiedConstraint(); if (constraint instanceof BundleSpecification || constraint instanceof HostSpecification) { BundleDescription[] requiredBundles = state.getBundles(constraint.getName()); for (int i = 0; i < requiredBundles.length; i++) { getRelevantErrors(state, errors, requiredBundles[i]); } } } }
/** * Resolves the root errors for the given set of errors * * @param rerrors * @param collector * @return the resolved leaf set of problem messages */ private String[] resolveRootErrors(ResolverError[] rerrors) { TreeSet<String> collector = new TreeSet<>((o1, o2) -> (o1).compareTo(o2)); ResolverError error = null; VersionConstraint[] constraints = null; BundleDescription[] bundle = new BundleDescription[1]; for (ResolverError rerror : rerrors) { error = rerror; if (error.getType() != ResolverError.MISSING_REQUIRE_BUNDLE) { collector.add(error.toString()); } bundle[0] = error.getBundle(); constraints = bundle[0].getContainingState().getStateHelper().getUnsatisfiedLeaves(bundle); if (constraints.length == 0) { collector.add(error.toString()); } for (VersionConstraint constraint : constraints) { collector.add(constraint.toString()); } } return collector.toArray(new String[collector.size()]); }
for (ResolverError error : errors) { Utils.displayError(bundle, level, error.toString()); VersionConstraint constraint = error.getUnsatisfiedConstraint(); switch (error.getType()) { case MISSING_IMPORT_PACKAGE: ImportPackageSpecification pkgSpec = (ImportPackageSpecification)constraint;
public void assertResolved( BundleDescription desc ) throws BundleException { if ( !desc.isResolved() ) { StringBuffer msg = new StringBuffer(); msg.append( "Bundle " ).append( desc.getSymbolicName() ).append( " cannot be resolved\n" ); msg.append( "Resolution errors:\n" ); ResolverError[] errors = getResolverErrors( desc ); for ( int i = 0; i < errors.length; i++ ) { ResolverError error = errors[i]; msg.append( " Bundle " ).append( error.getBundle().getSymbolicName() ).append( " - " ).append( error.toString() ).append( "\n" ); } throw new BundleException( msg.toString() ); } }
public void assertResolved(State state, BundleDescription desc) throws BundleException { if (!desc.isResolved()) { if (logger.isDebugEnabled()) { logger.debug("Equinox resolver state:\n" + toDebugString(state)); } StringBuffer msg = new StringBuffer(); msg.append("Bundle ").append(desc.getSymbolicName()).append(" cannot be resolved\n"); msg.append("Resolution errors:\n"); ResolverError[] errors = getResolverErrors(state, desc); for (int i = 0; i < errors.length; i++) { ResolverError error = errors[i]; msg.append(" Bundle ").append(error.getBundle().getSymbolicName()).append(" - ") .append(error.toString()).append("\n"); } throw new BundleException(msg.toString()); } }
private BundleException getResolverError(BundleDescription bundleDesc) { ResolverError[] errors = framework.adaptor.getState().getResolverErrors(bundleDesc); if (errors == null || errors.length == 0) return new BundleException(NLS.bind(Msg.BUNDLE_UNRESOLVED_EXCEPTION, this.toString()), BundleException.RESOLVE_ERROR); StringBuffer message = new StringBuffer(); int errorType = BundleException.RESOLVE_ERROR; for (int i = 0; i < errors.length; i++) { if ((errors[i].getType() & ResolverError.INVALID_NATIVECODE_PATHS) != 0) errorType = BundleException.NATIVECODE_ERROR; message.append(errors[i].toString()); if (i < errors.length - 1) message.append(", "); //$NON-NLS-1$ } return new BundleException(NLS.bind(Msg.BUNDLE_UNRESOLVED_UNSATISFIED_CONSTRAINT_EXCEPTION, this.toString(), message.toString()), errorType); }
private void getRelevantErrors(State state, Set<ResolverError> errors, BundleDescription bundle) { ResolverError[] bundleErrors = state.getResolverErrors(bundle); for (int j = 0; j < bundleErrors.length; j++) { ResolverError error = bundleErrors[j]; errors.add(error); VersionConstraint constraint = error.getUnsatisfiedConstraint(); if (constraint instanceof BundleSpecification || constraint instanceof HostSpecification) { BundleDescription[] requiredBundles = state.getBundles(constraint.getName()); for (int i = 0; i < requiredBundles.length; i++) { // if one of the constraints is the bundle itself (recursive dependency) // do not handle that bundle (again). See bug 442594. if (bundle.equals(requiredBundles[i])) { continue; } getRelevantErrors(state, errors, requiredBundles[i]); } } } }
ResolverError[] resolverErrors = platformAdmin.getState(false).getResolverErrors(bundle); for (int i = 0; i < resolverErrors.length; i++) { if ((resolverErrors[i].getType() & (ResolverError.MISSING_FRAGMENT_HOST | ResolverError.MISSING_GENERIC_CAPABILITY | ResolverError.MISSING_IMPORT_PACKAGE | ResolverError.MISSING_REQUIRE_BUNDLE)) != 0) continue; System.out.print(" "); //$NON-NLS-1$
private void getRelevantErrors( Set<ResolverError> errors, BundleDescription bundle ) { ResolverError[] bundleErrors = state.getResolverErrors( bundle ); for ( int j = 0; j < bundleErrors.length; j++ ) { ResolverError error = bundleErrors[j]; errors.add( error ); VersionConstraint constraint = error.getUnsatisfiedConstraint(); if ( constraint instanceof BundleSpecification || constraint instanceof HostSpecification ) { BundleDescription[] requiredBundles = state.getBundles( constraint.getName() ); for ( int i = 0; i < requiredBundles.length; i++ ) { getRelevantErrors( errors, requiredBundles[i] ); } } } }
private Image getObjectImage(ResolverError obj) { int type = obj.getType(); switch (type) { case ResolverError.MISSING_IMPORT_PACKAGE : case ResolverError.EXPORT_PACKAGE_PERMISSION : case ResolverError.IMPORT_PACKAGE_PERMISSION : case ResolverError.IMPORT_PACKAGE_USES_CONFLICT : return JavaUI.getSharedImages().getImage(ISharedImages.IMG_OBJS_PACKAGE); case ResolverError.MISSING_EXECUTION_ENVIRONMENT : return get(PDEPluginImages.DESC_JAVA_LIB_OBJ); case ResolverError.FRAGMENT_BUNDLE_PERMISSION : case ResolverError.FRAGMENT_CONFLICT : return get(PDEPluginImages.DESC_FRAGMENT_OBJ); } return get(PDEPluginImages.DESC_PLUGIN_OBJ); }
for (int i = 0, max = errors.length; i < max; i++) { ResolverError error = errors[i]; VersionConstraint constraint = error.getUnsatisfiedConstraint(); if (constraint == null) { continue;
@Override public MultiStatus diagnose(long id) { PlatformAdmin plaformAdmin = PDERuntimePlugin.getDefault().getPlatformAdmin(); State state = plaformAdmin.getState(false); BundleDescription desc = state.getBundle(id); PlatformAdmin platformAdmin = PDERuntimePlugin.getDefault().getPlatformAdmin(); VersionConstraint[] unsatisfied = platformAdmin.getStateHelper().getUnsatisfiedConstraints(desc); ResolverError[] resolverErrors = platformAdmin.getState(false).getResolverErrors(desc); MultiStatus problems = new MultiStatus(PDERuntimePlugin.ID, IStatus.INFO, PDERuntimeMessages.RegistryView_found_problems, null); for (ResolverError error : resolverErrors) { if ((error.getType() & (ResolverError.MISSING_FRAGMENT_HOST | ResolverError.MISSING_GENERIC_CAPABILITY | ResolverError.MISSING_IMPORT_PACKAGE | ResolverError.MISSING_REQUIRE_BUNDLE)) != 0){ continue; } IStatus status = new Status(IStatus.WARNING, PDERuntimePlugin.ID, error.toString()); problems.add(status); } for (VersionConstraint constraint : unsatisfied) { IStatus status = new Status(IStatus.WARNING, PDERuntimePlugin.ID, MessageHelper.getResolutionFailureMessage(constraint)); problems.add(status); } return problems; }
private void validateEclipsePlatformFilter() { IHeader header = getHeader(ICoreConstants.PLATFORM_FILTER); if (header == null) return; try { PDECore.getDefault().getBundleContext().createFilter(header.getValue()); int severity = CompilerFlags.getFlag(fProject, CompilerFlags.P_INCOMPATIBLE_ENV); if (severity == CompilerFlags.IGNORE) return; BundleDescription desc = fModel.getBundleDescription(); if (desc != null && !desc.isResolved()) { ResolverError[] errors = desc.getContainingState().getResolverErrors(desc); for (int i = 0; i < errors.length; i++) { if (errors[i].getType() == ResolverError.PLATFORM_FILTER) { report(PDECoreMessages.BundleErrorReporter_badFilter, header.getLineNumber() + 1, severity, PDEMarkerFactory.CAT_OTHER); } } } } catch (InvalidSyntaxException ise) { report(PDECoreMessages.BundleErrorReporter_invalidFilterSyntax, header.getLineNumber() + 1, CompilerFlags.ERROR, PDEMarkerFactory.CAT_FATAL); } }
@Override public Image getImage(Object element) { if (element instanceof DependencyGroup) element = ((DependencyGroup) element).getChildren()[0]; if (element instanceof BundleSpecification) element = ((BundleSpecification) element).getSupplier(); if (element instanceof BundleDescription) { int flags = ((BundleDescription) element).isResolved() ? 0 : SharedLabelProvider.F_ERROR; return (((BundleDescription) element).getHost() == null) ? fSharedProvider.get(PDEPluginImages.DESC_PLUGIN_OBJ, flags) : fSharedProvider.get(PDEPluginImages.DESC_FRAGMENT_OBJ, flags); } if (element instanceof ImportPackageSpecification) return JavaUI.getSharedImages().getImage(ISharedImages.IMG_OBJS_PACKAGE); if (element instanceof ResolverError) { if (((ResolverError) element).getType() == ResolverError.PLATFORM_FILTER) return fSharedProvider.get(PDEPluginImages.DESC_OPERATING_SYSTEM_OBJ); return fSharedProvider.getImage(element); } return null; }
private void validateEclipsePlatformFilter() { IHeader header = getHeader(ICoreConstants.PLATFORM_FILTER); if (header == null) return; try { PDECore.getDefault().getBundleContext().createFilter(header.getValue()); int severity = CompilerFlags.getFlag(fProject, CompilerFlags.P_INCOMPATIBLE_ENV); if (severity == CompilerFlags.IGNORE) return; BundleDescription desc = fModel.getBundleDescription(); if (desc != null && !desc.isResolved()) { ResolverError[] errors = desc.getContainingState().getResolverErrors(desc); for (int i = 0; i < errors.length; i++) { if (errors[i].getType() == ResolverError.PLATFORM_FILTER) { report(PDECoreMessages.BundleErrorReporter_badFilter, header.getLineNumber() + 1, severity, PDEMarkerFactory.CAT_OTHER); } } } } catch (InvalidSyntaxException ise) { report(PDECoreMessages.BundleErrorReporter_invalidFilterSyntax, header.getLineNumber() + 1, CompilerFlags.ERROR, PDEMarkerFactory.CAT_FATAL); } }
ResolverError[] errors = desc.getContainingState().getResolverErrors(desc); for (int i = 0; i < errors.length; i++) { if (errors[i].getType() == ResolverError.MISSING_FRAGMENT_HOST) { missingHost = true; break;
ResolverError[] errors = desc.getContainingState().getResolverErrors(desc); for (int i = 0; i < errors.length; i++) { if (errors[i].getType() == ResolverError.MISSING_FRAGMENT_HOST) { missingHost = true; break;
ResolverError[] resolverErrors = platformAdmin.getState(false).getResolverErrors(bundle); for (int i = 0; i < resolverErrors.length; i++) { if ((resolverErrors[i].getType() & (ResolverError.MISSING_FRAGMENT_HOST | ResolverError.MISSING_GENERIC_CAPABILITY | ResolverError.MISSING_IMPORT_PACKAGE | ResolverError.MISSING_REQUIRE_BUNDLE)) != 0) continue; ci.print(" "); //$NON-NLS-1$
ResolverError[] resolverErrors = platformAdmin.getState(false).getResolverErrors(bundle); for (int i = 0; i < resolverErrors.length; i++) { if ((resolverErrors[i].getType() & (ResolverError.MISSING_FRAGMENT_HOST | ResolverError.MISSING_GENERIC_CAPABILITY | ResolverError.MISSING_IMPORT_PACKAGE | ResolverError.MISSING_REQUIRE_BUNDLE)) != 0) continue; ci.print(" "); //$NON-NLS-1$