diff --git a/commafeed-server/src/main/java/com/commafeed/NativeImageClasses.java b/commafeed-server/src/main/java/com/commafeed/NativeImageClasses.java index 9f5211d9..278f83e3 100644 --- a/commafeed-server/src/main/java/com/commafeed/NativeImageClasses.java +++ b/commafeed-server/src/main/java/com/commafeed/NativeImageClasses.java @@ -14,8 +14,56 @@ import io.quarkus.runtime.annotations.RegisterForReflection; // metrics MetricRegistry.class, Meter.class, Gauge.class, Counter.class, Timer.class, Histogram.class, + // rome + java.util.Date.class, com.rometools.opml.feed.synd.impl.TreeCategoryImpl.class, + com.rometools.rome.feed.synd.SyndFeedImpl.class, com.rometools.rome.feed.module.DCSubjectImpl.class, + com.rometools.rome.feed.synd.SyndEntryImpl.class, com.rometools.modules.psc.types.SimpleChapter.class, + com.rometools.rome.feed.synd.SyndCategoryImpl.class, com.rometools.rome.feed.synd.SyndImageImpl.class, + com.rometools.rome.feed.synd.SyndContentImpl.class, com.rometools.rome.feed.synd.SyndEnclosureImpl.class, + + // rome cloneable + com.rometools.modules.activitystreams.types.Article.class, com.rometools.modules.activitystreams.types.Audio.class, + com.rometools.modules.activitystreams.types.Bookmark.class, com.rometools.modules.activitystreams.types.Comment.class, + com.rometools.modules.activitystreams.types.Event.class, com.rometools.modules.activitystreams.types.File.class, + com.rometools.modules.activitystreams.types.Folder.class, com.rometools.modules.activitystreams.types.List.class, + com.rometools.modules.activitystreams.types.Note.class, com.rometools.modules.activitystreams.types.Person.class, + com.rometools.modules.activitystreams.types.Photo.class, com.rometools.modules.activitystreams.types.PhotoAlbum.class, + com.rometools.modules.activitystreams.types.Place.class, com.rometools.modules.activitystreams.types.Playlist.class, + com.rometools.modules.activitystreams.types.Product.class, com.rometools.modules.activitystreams.types.Review.class, + com.rometools.modules.activitystreams.types.Service.class, com.rometools.modules.activitystreams.types.Song.class, + com.rometools.modules.activitystreams.types.Status.class, com.rometools.modules.base.types.DateTimeRange.class, + com.rometools.modules.base.types.FloatUnit.class, com.rometools.modules.base.types.GenderEnumeration.class, + com.rometools.modules.base.types.IntUnit.class, com.rometools.modules.base.types.PriceTypeEnumeration.class, + com.rometools.modules.base.types.ShippingType.class, com.rometools.modules.base.types.ShortDate.class, + com.rometools.modules.base.types.Size.class, com.rometools.modules.base.types.YearType.class, + com.rometools.modules.content.ContentItem.class, com.rometools.modules.georss.GeoRSSPoint.class, + com.rometools.modules.georss.geometries.Envelope.class, com.rometools.modules.georss.geometries.LineString.class, + com.rometools.modules.georss.geometries.LinearRing.class, com.rometools.modules.georss.geometries.Point.class, + com.rometools.modules.georss.geometries.Polygon.class, com.rometools.modules.georss.geometries.Position.class, + com.rometools.modules.georss.geometries.PositionList.class, com.rometools.modules.mediarss.types.MediaGroup.class, + com.rometools.modules.mediarss.types.Metadata.class, com.rometools.modules.mediarss.types.Thumbnail.class, + com.rometools.modules.opensearch.entity.OSQuery.class, com.rometools.modules.photocast.types.PhotoDate.class, + com.rometools.modules.sle.types.DateValue.class, com.rometools.modules.sle.types.Group.class, + com.rometools.modules.sle.types.NumberValue.class, com.rometools.modules.sle.types.Sort.class, + com.rometools.modules.sle.types.StringValue.class, com.rometools.modules.yahooweather.types.Astronomy.class, + com.rometools.modules.yahooweather.types.Atmosphere.class, com.rometools.modules.yahooweather.types.Condition.class, + com.rometools.modules.yahooweather.types.Forecast.class, com.rometools.modules.yahooweather.types.Location.class, + com.rometools.modules.yahooweather.types.Units.class, com.rometools.modules.yahooweather.types.Wind.class, + com.rometools.opml.feed.opml.Attribute.class, com.rometools.opml.feed.opml.Opml.class, + com.rometools.opml.feed.opml.Outline.class, com.rometools.rome.feed.atom.Category.class, + com.rometools.rome.feed.atom.Content.class, com.rometools.rome.feed.atom.Entry.class, + com.rometools.rome.feed.atom.Feed.class, com.rometools.rome.feed.atom.Generator.class, + com.rometools.rome.feed.atom.Link.class, com.rometools.rome.feed.atom.Person.class, + com.rometools.rome.feed.rss.Category.class, com.rometools.rome.feed.rss.Channel.class, + com.rometools.rome.feed.rss.Cloud.class, com.rometools.rome.feed.rss.Content.class, + com.rometools.rome.feed.rss.Description.class, com.rometools.rome.feed.rss.Enclosure.class, + com.rometools.rome.feed.rss.Guid.class, com.rometools.rome.feed.rss.Image.class, com.rometools.rome.feed.rss.Item.class, + com.rometools.rome.feed.rss.Source.class, com.rometools.rome.feed.rss.TextInput.class, + com.rometools.rome.feed.synd.SyndLinkImpl.class, com.rometools.rome.feed.synd.SyndPersonImpl.class, + java.util.ArrayList.class, + // rome modules - java.util.Date.class, com.rometools.modules.sse.modules.Conflict.class, com.rometools.modules.sse.modules.Conflicts.class, + com.rometools.modules.sse.modules.Conflict.class, com.rometools.modules.sse.modules.Conflicts.class, com.rometools.modules.cc.CreativeCommonsImpl.class, com.rometools.modules.feedpress.modules.FeedpressModuleImpl.class, com.rometools.modules.opensearch.impl.OpenSearchModuleImpl.class, com.rometools.modules.sse.modules.Sharing.class, com.rometools.modules.georss.SimpleModuleImpl.class, com.rometools.modules.atom.modules.AtomLinkModuleImpl.class, diff --git a/commafeed-server/src/test/java/com/commafeed/NativeImageClassesTest.java b/commafeed-server/src/test/java/com/commafeed/NativeImageClassesTest.java index 8b00dd90..4c961d02 100644 --- a/commafeed-server/src/test/java/com/commafeed/NativeImageClassesTest.java +++ b/commafeed-server/src/test/java/com/commafeed/NativeImageClassesTest.java @@ -1,6 +1,8 @@ package com.commafeed; import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -10,6 +12,7 @@ import org.junit.jupiter.api.Test; import org.reflections.Reflections; import org.reflections.scanners.Scanners; +import com.rometools.rome.feed.CopyFrom; import com.rometools.rome.feed.module.Module; import com.rometools.rome.io.WireFeedGenerator; import com.rometools.rome.io.WireFeedParser; @@ -24,15 +27,17 @@ class NativeImageClassesTest { Set> classesInAnnotation = Set .copyOf(List.of(NativeImageClasses.class.getAnnotation(RegisterForReflection.class).targets())); - for (Class clazz : Set.of(Module.class, WireFeedParser.class, WireFeedGenerator.class)) { + List> missingClasses = new ArrayList<>(); + for (Class clazz : List.of(Module.class, Cloneable.class, CopyFrom.class, WireFeedParser.class, WireFeedGenerator.class)) { Set> moduleClasses = new HashSet<>(reflections.get(Scanners.SubTypes.of(clazz).asClass())); - moduleClasses.removeIf(c -> c.isInterface() || Modifier.isAbstract(c.getModifiers())); + moduleClasses.removeIf(c -> c.isInterface() || Modifier.isAbstract(c.getModifiers()) || !Modifier.isPublic(c.getModifiers())); moduleClasses.removeAll(classesInAnnotation); - - moduleClasses.forEach(c -> System.out.println(c.getName() + ".class,")); - Assertions.assertEquals(Set.of(), moduleClasses); + missingClasses.addAll(moduleClasses); } + missingClasses.sort(Comparator.comparing(Class::getName)); + missingClasses.forEach(c -> System.out.println(c.getName() + ".class,")); + Assertions.assertEquals(List.of(), missingClasses); } } \ No newline at end of file