Skip to content

Commit

Permalink
Make PrismNamespaceContext serializable
Browse files Browse the repository at this point in the history
  • Loading branch information
tonydamage committed Feb 2, 2021
1 parent 6927c7c commit 713f581
Showing 1 changed file with 20 additions and 2 deletions.
Expand Up @@ -7,6 +7,7 @@

package com.evolveum.midpoint.prism;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
Expand All @@ -22,7 +23,7 @@
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Multimap;

public abstract class PrismNamespaceContext {
public abstract class PrismNamespaceContext implements Serializable {

public static final PrismNamespaceContext EMPTY = new Empty();
public static final String DEFAULT_PREFIX = "";
Expand Down Expand Up @@ -138,6 +139,7 @@ public static PrismNamespaceContext from(Map<String, String> prefixToNs) {

private static class Impl extends PrismNamespaceContext {

private static final long serialVersionUID = 1L;
private final Impl parent;
private final Map<String, String> prefixToNs;
private final Multimap<String,String> nsToPrefix;
Expand All @@ -151,6 +153,7 @@ public Impl(Impl parent, Map<String, String> local) {
this.parent = parent;
this.prefixToNs = ImmutableMap.copyOf(local);

// FIXME: nsToPrefix could be constructed lazily on first use
ImmutableMultimap.Builder<String, String> builder = ImmutableMultimap.builder();
for(Entry<String, String> e : prefixToNs.entrySet()) {
builder.put(e.getValue(), e.getKey());
Expand Down Expand Up @@ -302,6 +305,10 @@ private boolean isParent(PrismNamespaceContext current) {

private static class Inherited extends PrismNamespaceContext {

/**
*
*/
private static final long serialVersionUID = 1L;
private final Impl parent;

public Inherited(Impl parent) {
Expand All @@ -315,7 +322,7 @@ public Optional<PrismNamespaceContext> parent() {

@Override
public Map<String, String> localPrefixes() {
return parent.localPrefixes();
return Collections.emptyMap();
}

@Override
Expand Down Expand Up @@ -371,6 +378,11 @@ public PrismNamespaceContext rebasedOn(PrismNamespaceContext current) {

private static class Empty extends PrismNamespaceContext {

/**
*
*/
private static final long serialVersionUID = 1L;

@Override
public Optional<PrismNamespaceContext> parent() {
return Optional.empty();
Expand Down Expand Up @@ -435,6 +447,9 @@ public PrismNamespaceContext rebasedOn(PrismNamespaceContext current) {

public enum PrefixPreference {

/**
* Returns first found topmost (closest to namespace root) prefix
*/
GLOBAL_FIRST {

@Override
Expand All @@ -444,6 +459,9 @@ List<String> apply(Impl context, String namespace) {
return result;
}
},
/**
* Returns first found topmost (closest to namespace root) prefix which is not default
*/
GLOBAL_FIRST_SKIP_DEFAULTS {
@Override
List<String> apply(Impl context, String namespace) {
Expand Down

0 comments on commit 713f581

Please sign in to comment.