diff --git a/src/main/java/net/fortuna/ical4j/data/CalendarBuilder.java b/src/main/java/net/fortuna/ical4j/data/CalendarBuilder.java index b16a2d1db..104802895 100644 --- a/src/main/java/net/fortuna/ical4j/data/CalendarBuilder.java +++ b/src/main/java/net/fortuna/ical4j/data/CalendarBuilder.java @@ -115,6 +115,12 @@ public CalendarBuilder(CalendarParser parser, TimeZoneRegistry tzRegistry) { this.contentHandler = new DefaultContentHandler(this, tzRegistry); } + public CalendarBuilder(CalendarParser parser, TimeZoneRegistry tzRegistry, ContentHandler contentHandler) { + this.parser = parser; + this.tzRegistry = tzRegistry; + this.contentHandler = contentHandler; + } + /** * @param parser a custom calendar parser * @param tzRegistry a custom timezone registry @@ -123,14 +129,17 @@ public CalendarBuilder(CalendarParser parser, TimeZoneRegistry tzRegistry) { public CalendarBuilder(CalendarParser parser, PropertyFactoryRegistry propertyFactoryRegistry, ParameterFactoryRegistry parameterFactoryRegistry, TimeZoneRegistry tzRegistry) { - this(parser, new ContentHandlerContext().withParameterFactorySupplier(parameterFactoryRegistry) - .withPropertyFactorySupplier(propertyFactoryRegistry), tzRegistry); + this.parser = parser; + this.tzRegistry = tzRegistry; + this.contentHandler = new DefaultContentHandler(this, tzRegistry, + new ContentHandlerContext().withParameterFactorySupplier(parameterFactoryRegistry) + .withPropertyFactorySupplier(propertyFactoryRegistry)); } /** * @param parser a custom calendar parser * @param tzRegistry a custom timezone registry - * @deprecated use {@link CalendarBuilder#CalendarBuilder(CalendarParser, ContentHandlerContext, TimeZoneRegistry)} + * @deprecated use {@link CalendarBuilder#CalendarBuilder(CalendarParser,TimeZoneRegistry, ContentHandler)} */ @Deprecated public CalendarBuilder(CalendarParser parser, Supplier>> parameterFactorySupplier, @@ -138,15 +147,20 @@ public CalendarBuilder(CalendarParser parser, Supplier> Supplier>> componentFactorySupplier, TimeZoneRegistry tzRegistry) { - this(parser, new ContentHandlerContext().withParameterFactorySupplier(parameterFactorySupplier) + this.parser = parser; + this.tzRegistry = tzRegistry; + this.contentHandler = new DefaultContentHandler(this, tzRegistry, + new ContentHandlerContext().withParameterFactorySupplier(parameterFactorySupplier) .withPropertyFactorySupplier(propertyFactorySupplier) - .withComponentFactorySupplier(componentFactorySupplier), tzRegistry); + .withComponentFactorySupplier(componentFactorySupplier)); } /** * @param parser a custom calendar parser * @param tzRegistry a custom timezone registry + * @deprecated use {@link CalendarBuilder#CalendarBuilder(CalendarParser, TimeZoneRegistry, ContentHandler)} */ + @Deprecated public CalendarBuilder(CalendarParser parser, ContentHandlerContext contentHandlerContext, TimeZoneRegistry tzRegistry) { diff --git a/src/main/java/net/fortuna/ical4j/data/DefaultContentHandler.java b/src/main/java/net/fortuna/ical4j/data/DefaultContentHandler.java index a487ae21d..bf9471d73 100644 --- a/src/main/java/net/fortuna/ical4j/data/DefaultContentHandler.java +++ b/src/main/java/net/fortuna/ical4j/data/DefaultContentHandler.java @@ -20,16 +20,16 @@ public class DefaultContentHandler implements ContentHandler { private final Consumer consumer; - private PropertyBuilder propertyBuilder; + protected PropertyBuilder propertyBuilder; /** * The current component builders. */ - private final LinkedList> components = new LinkedList<>(); + protected final LinkedList> components = new LinkedList<>(); - private List calendarProperties; + protected List calendarProperties; - private List calendarComponents; + protected List calendarComponents; public DefaultContentHandler(Consumer consumer, TimeZoneRegistry tzRegistry) { this(consumer, tzRegistry, new ContentHandlerContext()); @@ -127,7 +127,8 @@ public void endComponent(String name) { @Override public void startProperty(String name) { if (!context.getIgnoredPropertyNames().contains(name.toUpperCase())) { - propertyBuilder = new PropertyBuilder(context.getPropertyFactorySupplier().get()).name(name).timeZoneRegistry(tzRegistry); + propertyBuilder = new PropertyBuilder(context.getPropertyFactorySupplier().get()).name(name) + .timeZoneRegistry(tzRegistry); } else { propertyBuilder = null; }