2016-11-25 15:42:29 +01:00
|
|
|
package org.gcube.smartgears.configuration.application;
|
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.HashSet;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Objects;
|
2016-11-25 15:42:29 +01:00
|
|
|
import java.util.Set;
|
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
import org.gcube.com.fasterxml.jackson.annotation.JsonAutoDetect;
|
|
|
|
import org.gcube.com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
|
|
|
|
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
|
|
|
import org.gcube.com.fasterxml.jackson.annotation.JsonInclude;
|
|
|
|
import org.gcube.com.fasterxml.jackson.annotation.JsonInclude.Include;
|
|
|
|
import org.gcube.com.fasterxml.jackson.annotation.JsonProperty;
|
|
|
|
import org.gcube.common.validator.ValidationError;
|
|
|
|
import org.gcube.common.validator.Validator;
|
|
|
|
import org.gcube.common.validator.ValidatorFactory;
|
|
|
|
import org.gcube.common.validator.annotations.NotEmpty;
|
|
|
|
import org.gcube.common.validator.annotations.NotNull;
|
|
|
|
import org.gcube.smartgears.configuration.PersistenceConfiguration;
|
2016-11-25 15:42:29 +01:00
|
|
|
|
|
|
|
/**
|
2023-02-06 17:34:18 +01:00
|
|
|
* The configuration of a managed app.
|
|
|
|
* <p>
|
|
|
|
* Includes the list of its client services.
|
|
|
|
*
|
|
|
|
* @author Lucio Lelii
|
2016-11-25 15:42:29 +01:00
|
|
|
*
|
|
|
|
*/
|
2023-02-06 17:34:18 +01:00
|
|
|
@JsonInclude(value = Include.NON_NULL)
|
|
|
|
@JsonAutoDetect(fieldVisibility = Visibility.ANY)
|
|
|
|
public class ApplicationConfiguration {
|
2016-11-25 15:42:29 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
@NotNull
|
|
|
|
String name;
|
|
|
|
|
|
|
|
@NotNull
|
|
|
|
String group;
|
|
|
|
|
|
|
|
@NotNull
|
|
|
|
String version;
|
2016-11-25 15:42:29 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
String description="";
|
2022-06-24 15:45:43 +02:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
@JsonIgnore
|
|
|
|
String context;
|
2022-06-24 15:45:43 +02:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
private boolean proxable = true;
|
|
|
|
|
|
|
|
Set<GCubeExclude> excludes= null;
|
2016-11-25 15:42:29 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
Set<GCubeInclude> includes= null;
|
2016-11-25 15:42:29 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
@NotEmpty @JsonProperty("persistence")
|
|
|
|
PersistenceConfiguration persistenceConfiguration;
|
2016-11-25 15:42:29 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
public Set<GCubeExclude> excludes() {
|
|
|
|
return excludes;
|
|
|
|
}
|
2016-11-25 15:42:29 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
public Set<GCubeInclude> includes() {
|
|
|
|
return includes;
|
|
|
|
}
|
2016-11-25 15:42:29 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
public ApplicationConfiguration() {}
|
|
|
|
|
|
|
|
public String name() {
|
|
|
|
return name;
|
|
|
|
}
|
2016-11-25 15:42:29 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
public String context() {
|
|
|
|
return context;
|
|
|
|
}
|
2016-11-25 15:42:29 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
public ApplicationConfiguration excludes(GCubeExclude ... excludes) {
|
|
|
|
this.excludes=new HashSet<GCubeExclude>(Arrays.asList(excludes));
|
|
|
|
return this;
|
|
|
|
}
|
2016-11-25 15:42:29 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
public ApplicationConfiguration includes(GCubeInclude... includes) {
|
|
|
|
this.includes=new HashSet<GCubeInclude>(Arrays.asList(includes));
|
|
|
|
return this;
|
|
|
|
}
|
2018-12-10 18:36:19 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
public ApplicationConfiguration context(String context) {
|
|
|
|
this.context = context;
|
|
|
|
return this;
|
|
|
|
}
|
2022-03-21 11:17:07 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
public ApplicationConfiguration name(String name) {
|
|
|
|
this.name=name;
|
|
|
|
return this;
|
|
|
|
}
|
2016-11-25 15:42:29 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
public ApplicationConfiguration persistenceConfiguration(PersistenceConfiguration configuration) {
|
|
|
|
this.persistenceConfiguration = configuration;
|
|
|
|
return this;
|
|
|
|
}
|
2016-11-25 15:42:29 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
public ApplicationConfiguration proxable(boolean proxable) {
|
|
|
|
this.proxable = proxable;
|
|
|
|
return this;
|
|
|
|
}
|
2018-12-10 18:36:19 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
public String serviceClass() {
|
|
|
|
return group;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public ApplicationConfiguration serviceClass(String group) {
|
|
|
|
this.group=group;
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String version() {
|
|
|
|
return version;
|
|
|
|
}
|
|
|
|
|
|
|
|
public ApplicationConfiguration version(String version) {
|
|
|
|
this.version=version;
|
|
|
|
return this;
|
|
|
|
}
|
2016-11-25 15:42:29 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
|
|
|
|
public String description() {
|
|
|
|
return description;
|
|
|
|
}
|
|
|
|
|
|
|
|
public ApplicationConfiguration description(String description) {
|
|
|
|
this.description=description;
|
|
|
|
return this;
|
|
|
|
}
|
2016-11-25 15:42:29 +01:00
|
|
|
|
2023-02-06 17:34:18 +01:00
|
|
|
public boolean proxable() {
|
|
|
|
return proxable;
|
|
|
|
}
|
|
|
|
|
|
|
|
public PersistenceConfiguration persistenceConfiguration() {
|
|
|
|
return persistenceConfiguration;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void validate() {
|
|
|
|
|
|
|
|
List<String> msgs = new ArrayList<String>();
|
|
|
|
|
|
|
|
Validator validator = ValidatorFactory.validator();
|
|
|
|
|
|
|
|
for (ValidationError error : validator.validate(this))
|
|
|
|
msgs.add(error.toString());
|
|
|
|
|
|
|
|
if (!this.excludes().isEmpty() && !this.includes().isEmpty())
|
|
|
|
msgs.add("exclude tags and includes tags are mutually exclusive");
|
|
|
|
|
|
|
|
if (!msgs.isEmpty())
|
|
|
|
throw new IllegalStateException("invalid configuration: "+msgs);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int hashCode() {
|
|
|
|
return Objects.hash(description, excludes, group, includes, name, proxable, version);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean equals(Object obj) {
|
|
|
|
if (this == obj)
|
|
|
|
return true;
|
|
|
|
if (obj == null)
|
|
|
|
return false;
|
|
|
|
if (getClass() != obj.getClass())
|
|
|
|
return false;
|
|
|
|
ApplicationConfiguration other = (ApplicationConfiguration) obj;
|
|
|
|
return Objects.equals(description, other.description)
|
|
|
|
&& Objects.equals(excludes, other.excludes) && Objects.equals(group, other.group)
|
|
|
|
&& Objects.equals(includes, other.includes) && Objects.equals(name, other.name)
|
|
|
|
&& proxable == other.proxable && Objects.equals(version, other.version);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-11-25 15:42:29 +01:00
|
|
|
}
|