diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/DynamicHttpMetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/DynamicHttpMetadataResolver.java index d1b3692d2..b98d4188b 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/DynamicHttpMetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/DynamicHttpMetadataResolver.java @@ -5,9 +5,11 @@ import lombok.Setter; import lombok.ToString; +import javax.persistence.CascadeType; import javax.persistence.ElementCollection; import javax.persistence.Embedded; import javax.persistence.Entity; +import javax.persistence.OneToOne; import javax.persistence.OrderColumn; import java.util.List; @@ -36,6 +38,9 @@ public class DynamicHttpMetadataResolver extends MetadataResolver { @OrderColumn private List supportedContentTypes; + @OneToOne(cascade = CascadeType.ALL) + private MetadataRequestURLConstructionScheme metadataRequestURLConstructionScheme; + public DynamicHttpMetadataResolver() { type = "DynamicHttpMetadataResolver"; this.httpMetadataResolverAttributes = new HttpMetadataResolverAttributes(); diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataQueryProtocolScheme.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataQueryProtocolScheme.java new file mode 100644 index 000000000..cc6dffb98 --- /dev/null +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataQueryProtocolScheme.java @@ -0,0 +1,23 @@ +package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.Entity; + +/** + * @author Bill Smith (wsmith@unicon.net) + */ +@Entity +@Getter +@Setter +@EqualsAndHashCode(callSuper = true) +public class MetadataQueryProtocolScheme extends MetadataRequestURLConstructionScheme { + + public MetadataQueryProtocolScheme() { + type = "MetadataQueryProtocol"; + } + + private String transformRef; +} diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataRequestURLConstructionScheme.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataRequestURLConstructionScheme.java new file mode 100644 index 000000000..c6e8f9be1 --- /dev/null +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataRequestURLConstructionScheme.java @@ -0,0 +1,32 @@ +package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import edu.internet2.tier.shibboleth.admin.ui.domain.AbstractAuditable; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.Entity; +import javax.persistence.Transient; + +/** + * @author Bill Smith (wsmith@unicon.net) + */ +@Entity +@Getter +@Setter +@EqualsAndHashCode(callSuper = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "@type", visible = true) +@JsonSubTypes({@JsonSubTypes.Type(value=MetadataQueryProtocolScheme.class, name="MetadataQueryProtocol"), + @JsonSubTypes.Type(value=TemplateScheme.class, name="Template"), + @JsonSubTypes.Type(value=RegexScheme.class, name="Regex")}) +public abstract class MetadataRequestURLConstructionScheme extends AbstractAuditable { + + @JsonProperty("@type") + @Transient + String type; + + String content; +} diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/RegexScheme.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/RegexScheme.java new file mode 100644 index 000000000..bb175432c --- /dev/null +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/RegexScheme.java @@ -0,0 +1,25 @@ +package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.Entity; +import javax.validation.constraints.NotNull; + +/** + * @author Bill Smith (wsmith@unicon.net) + */ +@Entity +@Getter +@Setter +@EqualsAndHashCode(callSuper = true) +public class RegexScheme extends MetadataRequestURLConstructionScheme { + + public RegexScheme() { + type = "Regex"; + } + + @NotNull + private String match; +} diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/TemplateScheme.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/TemplateScheme.java new file mode 100644 index 000000000..6cb0c8d90 --- /dev/null +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/TemplateScheme.java @@ -0,0 +1,31 @@ +package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.Entity; + +/** + * @author Bill Smith (wsmith@unicon.net) + */ +@Entity +@Getter +@Setter +@EqualsAndHashCode(callSuper = true) +public class TemplateScheme extends MetadataRequestURLConstructionScheme { + + public TemplateScheme () { + type = "Template"; + } + + public enum EncodingStyle { + NONE, FORM, PATH, FRAGMENT + } + + private EncodingStyle encodingStyle = EncodingStyle.FORM; + + private String transformRef; + + private String velocityEngine = "shibboleth.VelocityEngine"; +}