/** Returns an {@link ApiSurface} object representing the given package and all subpackages. */ public static ApiSurface ofPackage(Package aPackage, ClassLoader classLoader) throws IOException { return ofPackage(aPackage.getName(), classLoader); }
ApiSurface.ofPackage(thisPackage, thisClassLoader) .pruningPattern(BigqueryMatcher.class.getName()) .pruningPattern(BigqueryClient.class.getName())
/** * All classes transitively reachable via only public method signatures of the SDK. * * <p>Note that our idea of "public" does not include various internal-only APIs. */ public static ApiSurface getSdkApiSurface(final ClassLoader classLoader) throws IOException { return ApiSurface.ofPackage("org.apache.beam", classLoader) .pruningPattern("org[.]apache[.]beam[.].*Test") // Exposes Guava, but not intended for users .pruningClassName("org.apache.beam.sdk.util.common.ReflectHelpers") // test only .pruningClassName("org.apache.beam.sdk.testing.InterceptingUrlClassLoader") // test only .pruningPrefix("org.apache.beam.model.") .pruningPrefix("org.apache.beam.vendor.") .pruningPrefix("java"); }
@Test public void testGcpCoreApiSurface() throws Exception { final Package thisPackage = getClass().getPackage(); final ClassLoader thisClassLoader = getClass().getClassLoader(); final ApiSurface apiSurface = ApiSurface.ofPackage(thisPackage, thisClassLoader) .pruningPattern("org[.]apache[.]beam[.].*Test.*") .pruningPattern("org[.]apache[.]beam[.].*IT") .pruningPattern("java[.]lang.*") .pruningPattern("java[.]util.*"); @SuppressWarnings("unchecked") final Set<Matcher<Class<?>>> allowedClasses = ImmutableSet.of( classesInPackage("com.google.api.client.googleapis"), classesInPackage("com.google.api.client.http"), classesInPackage("com.google.api.client.json"), classesInPackage("com.google.api.client.util"), classesInPackage("com.google.api.services.storage"), classesInPackage("com.google.auth"), classesInPackage("com.fasterxml.jackson.annotation"), classesInPackage("java"), classesInPackage("javax"), classesInPackage("org.apache.beam.sdk"), classesInPackage("org.joda.time")); assertThat(apiSurface, containsOnlyClassesMatching(allowedClasses)); } }
final ClassLoader thisClassLoader = getClass().getClassLoader(); ApiSurface apiSurface = ApiSurface.ofPackage(thisPackage, thisClassLoader)