/** * Tests that an exported package removal in the PDE model is reflected in the workspace api * baseline */ public void testWPUpdateExportPackageRemoved() throws Exception { IJavaProject project = getTestingProject(); assertNotNull("The testing project must exist", project); // add package assertTestPackage( project, new Path(project.getElementName()).append(ProjectUtils.SRC_FOLDER).makeAbsolute(), "export1"); setPackageToApi(project, "export1"); IApiAnnotations annot = getTestProjectApiDescription().resolveAnnotations(Factory.packageDescriptor("export1")); assertNotNull("there must be an annotation for the new exported package", annot); assertTrue( "the newly exported package must be API visibility", annot.getVisibility() == VisibilityModifiers.API); // remove exported packages IBundleProjectService service = ProjectUtils.getBundleProjectService(); IBundleProjectDescription description = service.getDescription(project.getProject()); description.setPackageExports(null); description.apply(null); // check the API description annot = getTestProjectApiDescription().resolveAnnotations(Factory.packageDescriptor("export1")); assertNotNull("should still be an annotation for the package", annot); assertTrue( "unexported package must be private", VisibilityModifiers.isPrivate(annot.getVisibility())); }
/** * Returns whether the given type has API visibility. * * @param type type * @return whether the given type has API visibility */ private boolean isAPIType(IApiType type) throws CoreException { IApiDescription description = type.getApiComponent().getApiDescription(); IApiAnnotations annotations = description.resolveAnnotations(type.getHandle()); if (annotations == null) { // top level non-public top can have no annotations - they are not // API return false; } return VisibilityModifiers.isAPI(annotations.getVisibility()); }