-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'SHIBUI-517' into SHIBUI-522
- Loading branch information
Showing
17 changed files
with
1,035 additions
and
68 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
110 changes: 110 additions & 0 deletions
110
...ternet2/tier/shibboleth/admin/ui/controller/FileBackedHttpMetadataProviderController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,110 @@ | ||
| package edu.internet2.tier.shibboleth.admin.ui.controller; | ||
|
|
||
| import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.FileBackedHttpMetadataResolver; | ||
| import edu.internet2.tier.shibboleth.admin.ui.repository.FileBackedHttpMetadataResolverRepository; | ||
| import org.slf4j.Logger; | ||
| import org.slf4j.LoggerFactory; | ||
| import org.springframework.beans.factory.annotation.Autowired; | ||
| import org.springframework.http.HttpStatus; | ||
| import org.springframework.http.ResponseEntity; | ||
| import org.springframework.transaction.annotation.Transactional; | ||
| import org.springframework.web.bind.annotation.DeleteMapping; | ||
| import org.springframework.web.bind.annotation.GetMapping; | ||
| import org.springframework.web.bind.annotation.PathVariable; | ||
| import org.springframework.web.bind.annotation.PostMapping; | ||
| import org.springframework.web.bind.annotation.PutMapping; | ||
| import org.springframework.web.bind.annotation.RequestBody; | ||
| import org.springframework.web.bind.annotation.RequestMapping; | ||
| import org.springframework.web.bind.annotation.RestController; | ||
| import org.springframework.web.servlet.support.ServletUriComponentsBuilder; | ||
|
|
||
| import java.net.URI; | ||
|
|
||
| /** | ||
| * @author Bill Smith (wsmith@unicon.net) | ||
| */ | ||
| @RestController | ||
| @RequestMapping("/api/MetadataProvider/FileBackedHttp") | ||
| public class FileBackedHttpMetadataProviderController { | ||
| private static final Logger logger = LoggerFactory.getLogger(FileBackedHttpMetadataProviderController.class); | ||
|
|
||
| @Autowired | ||
| FileBackedHttpMetadataResolverRepository repository; | ||
|
|
||
| @DeleteMapping("/{resourceId}") | ||
| public ResponseEntity<?> deleteByResourceId(@PathVariable String resourceId) { | ||
| if (repository.deleteByResourceId(resourceId)) { | ||
| return ResponseEntity.accepted().build(); | ||
| } else { | ||
| return ResponseEntity.notFound().build(); | ||
| } | ||
| } | ||
|
|
||
| @GetMapping("/name/{metadataProviderName}") | ||
| @Transactional(readOnly = true) | ||
| public ResponseEntity<?> getOneByName(@PathVariable String metadataProviderName) { | ||
| FileBackedHttpMetadataResolver resolver = repository.findByName(metadataProviderName); | ||
| if (resolver == null) { | ||
| return ResponseEntity.notFound().build(); | ||
| } else { | ||
| resolver.setVersion(resolver.hashCode()); | ||
| return ResponseEntity.ok(resolver); | ||
| } | ||
| } | ||
|
|
||
| @GetMapping("/{resourceId}") | ||
| @Transactional(readOnly = true) | ||
| public ResponseEntity<?> getOneByResourceId(@PathVariable String resourceId) { | ||
| FileBackedHttpMetadataResolver resolver = repository.findByResourceId(resourceId); | ||
| if (resolver == null) { | ||
| return ResponseEntity.notFound().build(); | ||
| } else { | ||
| resolver.setVersion(resolver.hashCode()); | ||
| return ResponseEntity.ok(resolver); | ||
| } | ||
| } | ||
|
|
||
| @PostMapping | ||
| public ResponseEntity<?> create(@RequestBody FileBackedHttpMetadataResolver resolver) { | ||
| if (repository.findByName(resolver.getName()) != null) { | ||
| return ResponseEntity.status(HttpStatus.CONFLICT).build(); | ||
| } | ||
|
|
||
| FileBackedHttpMetadataResolver persistedResolver = repository.save(resolver); | ||
| persistedResolver.setVersion(persistedResolver.hashCode()); | ||
|
|
||
| return ResponseEntity | ||
| .created(getResourceUriFor(persistedResolver)) | ||
| .body(persistedResolver); | ||
| } | ||
|
|
||
| @PutMapping | ||
| public ResponseEntity<?> update(@RequestBody FileBackedHttpMetadataResolver resolver) { | ||
| FileBackedHttpMetadataResolver existingResolver = repository.findByResourceId(resolver.getResourceId()); | ||
|
|
||
| if (existingResolver == null) { | ||
| return ResponseEntity.notFound().build(); | ||
| } | ||
|
|
||
| if (existingResolver.hashCode() != resolver.getVersion()) { | ||
| logger.info("Comparing: " + existingResolver.hashCode() + " with " + resolver.getVersion()); | ||
| return ResponseEntity.status(HttpStatus.CONFLICT).build(); | ||
| } | ||
|
|
||
| resolver.setAudId(existingResolver.getAudId()); | ||
| //TODO: Do we need to set anything else? dates? | ||
|
|
||
| FileBackedHttpMetadataResolver updatedResolver = repository.save(resolver); | ||
| updatedResolver.setVersion(updatedResolver.hashCode()); | ||
|
|
||
| return ResponseEntity.ok(updatedResolver); | ||
| } | ||
|
|
||
| private static URI getResourceUriFor(FileBackedHttpMetadataResolver resolver) { | ||
| return ServletUriComponentsBuilder | ||
| .fromCurrentServletMapping().path("/api/MetadataProvider/FileBackedHttp/") | ||
| .pathSegment(resolver.getResourceId()) | ||
| .build() | ||
| .toUri(); | ||
| } | ||
| } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
56 changes: 0 additions & 56 deletions
56
backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/MetadataResolver.java
This file was deleted.
Oops, something went wrong.
26 changes: 26 additions & 0 deletions
26
...u/internet2/tier/shibboleth/admin/ui/domain/resolvers/FileBackedHttpMetadataResolver.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers; | ||
|
|
||
| import lombok.EqualsAndHashCode; | ||
| import lombok.Getter; | ||
| import lombok.NoArgsConstructor; | ||
| import lombok.Setter; | ||
| import lombok.ToString; | ||
|
|
||
| import javax.persistence.Embedded; | ||
| import javax.persistence.Entity; | ||
|
|
||
| @Entity | ||
| @EqualsAndHashCode(callSuper = true) | ||
| @NoArgsConstructor | ||
| @Getter | ||
| @Setter | ||
| @ToString | ||
| public class FileBackedHttpMetadataResolver extends MetadataResolver { | ||
|
|
||
| @Embedded | ||
| private ReloadableMetadataResolverAttributes reloadableMetadataResolverAttributes; | ||
|
|
||
| @Embedded | ||
| private HttpMetadataResolverAttributes httpMetadataResolverAttributes; | ||
|
|
||
| } |
58 changes: 58 additions & 0 deletions
58
...u/internet2/tier/shibboleth/admin/ui/domain/resolvers/HttpMetadataResolverAttributes.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers; | ||
|
|
||
| import lombok.AllArgsConstructor; | ||
| import lombok.EqualsAndHashCode; | ||
| import lombok.Getter; | ||
| import lombok.NoArgsConstructor; | ||
| import lombok.Setter; | ||
|
|
||
| import javax.persistence.Column; | ||
| import javax.persistence.Embeddable; | ||
| import javax.persistence.Enumerated; | ||
|
|
||
| import static javax.persistence.EnumType.STRING; | ||
|
|
||
| @Embeddable | ||
| @NoArgsConstructor | ||
| @AllArgsConstructor | ||
| @Getter | ||
| @Setter | ||
| @EqualsAndHashCode | ||
| public class HttpMetadataResolverAttributes { | ||
|
|
||
| private String httpClientRef; | ||
|
|
||
| private String connectionRequestTimeout; | ||
|
|
||
| private String requestTimeout; | ||
|
|
||
| private String socketTimeout; | ||
|
|
||
| private Boolean disregardTLSCertificate; | ||
|
|
||
| private String tlsTrustEngineRef; | ||
|
|
||
| private String httpClientSecurityParametersRef; | ||
|
|
||
| private String proxyHost; | ||
|
|
||
| private String proxyPort; | ||
|
|
||
| private String proxyUser; | ||
|
|
||
| private String proxyPassword; | ||
|
|
||
| @Enumerated(STRING) | ||
| @Column(length = 6) | ||
| private HttpCachingType httpCaching; | ||
|
|
||
| private String httpCacheDirectory; | ||
|
|
||
| private Integer httpMaxCacheEntries; | ||
|
|
||
| private Integer httpMaxCacheEntrySize; | ||
|
|
||
| private enum HttpCachingType { | ||
| none,file,memory | ||
| } | ||
| } |
56 changes: 56 additions & 0 deletions
56
...c/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,56 @@ | ||
| package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers; | ||
|
|
||
| import edu.internet2.tier.shibboleth.admin.ui.domain.AbstractAuditable; | ||
| import edu.internet2.tier.shibboleth.admin.ui.domain.filters.MetadataFilter; | ||
| import lombok.EqualsAndHashCode; | ||
| import lombok.Getter; | ||
| import lombok.NoArgsConstructor; | ||
| import lombok.Setter; | ||
| import lombok.ToString; | ||
|
|
||
| import javax.persistence.CascadeType; | ||
| import javax.persistence.Column; | ||
| import javax.persistence.Entity; | ||
| import javax.persistence.Inheritance; | ||
| import javax.persistence.InheritanceType; | ||
| import javax.persistence.OneToMany; | ||
| import javax.persistence.OrderColumn; | ||
| import javax.persistence.Transient; | ||
| import java.util.ArrayList; | ||
| import java.util.List; | ||
| import java.util.UUID; | ||
|
|
||
| @Entity | ||
| @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) | ||
| @EqualsAndHashCode(callSuper = true, exclude={"version"}) | ||
| @NoArgsConstructor | ||
| @Getter | ||
| @Setter | ||
| @ToString | ||
| public class MetadataResolver extends AbstractAuditable { | ||
|
|
||
| @Column(unique=true) | ||
| private String name; | ||
|
|
||
| @Column(unique=true) | ||
| private String resourceId = UUID.randomUUID().toString(); | ||
|
|
||
| private Boolean requireValidMetadata; | ||
|
|
||
| private Boolean failFastInitialization; | ||
|
|
||
| private Integer sortKey; | ||
|
|
||
| private String criterionPredicateRegistryRef; | ||
|
|
||
| private Boolean useDefaultPredicateRegistry; | ||
|
|
||
| private Boolean satisfyAnyPredicates; | ||
|
|
||
| @OneToMany(cascade = CascadeType.ALL) | ||
| @OrderColumn | ||
| private List<MetadataFilter> metadataFilters = new ArrayList<>(); | ||
|
|
||
| @Transient | ||
| private int version; | ||
| } |
35 changes: 35 additions & 0 deletions
35
...rnet2/tier/shibboleth/admin/ui/domain/resolvers/ReloadableMetadataResolverAttributes.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,35 @@ | ||
| package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers; | ||
|
|
||
| import lombok.AllArgsConstructor; | ||
| import lombok.EqualsAndHashCode; | ||
| import lombok.Getter; | ||
| import lombok.NoArgsConstructor; | ||
| import lombok.Setter; | ||
|
|
||
| import javax.persistence.Embeddable; | ||
|
|
||
| @Embeddable | ||
| @NoArgsConstructor | ||
| @AllArgsConstructor | ||
| @Getter | ||
| @Setter | ||
| @EqualsAndHashCode | ||
| public class ReloadableMetadataResolverAttributes { | ||
|
|
||
| private String parserPoolRef; | ||
|
|
||
| private String taskTimerRef; | ||
|
|
||
| private String minRefreshDelay; | ||
|
|
||
| private String maxRefreshDelay; | ||
|
|
||
| private Double refreshDelayFactor; | ||
|
|
||
| private String indexesRef; | ||
|
|
||
| private Boolean resolveViaPredicatesOnly; | ||
|
|
||
| private String expirationWarningThreshold; | ||
|
|
||
| } |
Oops, something went wrong.