Skip to content

Commit

Permalink
Add missing ExtendedCatalogFacade methods to ResolvingCatalogFacadeDe…
Browse files Browse the repository at this point in the history
…corator

`ResolvingCatalogFacadeDecorator.remove(CatalogInfo)`, when called by
`RemoteEventDataDirectoryProcessor` would result in an exception from
the underlying `CatalogFacade` saying it doesn't support `Proxy`
objects.

Add the missing overrides for methods defined in `ExtendedCatalogFacade`
to ensure all incoming and outgoing objects are resolved as appropriate.
  • Loading branch information
groldan committed May 2, 2024
1 parent 72acd49 commit 354a630
Showing 1 changed file with 44 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

import com.google.common.collect.Lists;

import lombok.NonNull;

import org.geoserver.catalog.Catalog;
import org.geoserver.catalog.CatalogFacade;
import org.geoserver.catalog.CatalogInfo;
Expand All @@ -14,6 +16,7 @@
import org.geoserver.catalog.LayerInfo;
import org.geoserver.catalog.MapInfo;
import org.geoserver.catalog.NamespaceInfo;
import org.geoserver.catalog.PublishedInfo;
import org.geoserver.catalog.ResourceInfo;
import org.geoserver.catalog.StoreInfo;
import org.geoserver.catalog.StyleInfo;
Expand All @@ -32,6 +35,9 @@

import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.UnaryOperator;
import java.util.stream.Stream;

Expand Down Expand Up @@ -122,11 +128,49 @@ protected <C extends CatalogInfo> List<C> resolveOutbound(List<C> info) {
return Lists.transform(info, this::resolveOutbound);
}

// ExtendedCatalogFacade-specific methods
@Override
public <T extends CatalogInfo> T add(@NonNull T info) {
return super.add(resolveInbound(info));
}

@Override
public <I extends CatalogInfo> I update(I info, Patch patch) {
return resolveOutbound(super.update(resolveInbound(info), patch));
}

@Override
public void remove(@NonNull CatalogInfo info) {
super.remove(resolveInbound(info));
}

@Override
public Optional<CatalogInfo> get(@NonNull String id) {
return super.get(id).map(this::resolveOutbound);
}

@Override
public <T extends CatalogInfo> Optional<T> get(@NonNull String id, @NonNull Class<T> type) {
return super.get(id, type).map(this::resolveOutbound);
}

@Override
public PublishedInfo getPublished(@NonNull String id) {
return resolveOutbound(super.getPublished(id));
}

@Override
public void forEach(Consumer<? super CatalogInfo> consumer) {
super.forEach(info -> consumer.accept(resolveOutbound(info)));
}

@Override
public <T extends CatalogInfo> Stream<T> query(Query<T> query) {
return super.query(query).map(this::resolveOutbound).filter(Objects::nonNull);
}

// CatalogFacade methods

@Override
public StoreInfo add(StoreInfo store) {
return resolveOutbound(super.add(resolveInbound(store)));
Expand Down Expand Up @@ -509,9 +553,4 @@ public <T extends CatalogInfo> CloseableIterator<T> list(
asExtendedFacade().list(of, filter, offset, count, sortOrder);
return CloseableIteratorAdapter.transform(orig, this::resolveOutbound);
}

@Override
public <T extends CatalogInfo> Stream<T> query(Query<T> query) {
return super.query(query).map(this::resolveOutbound).filter(Objects::nonNull);
}
}

0 comments on commit 354a630

Please sign in to comment.