ソースを参照

use consistent (compact) json mapper when saving json fields to db

tags/v0.5.0
Jonathan Cobb 4年前
コミット
54a2c9271c
14個のファイルの変更35行の追加23行の削除
  1. +4
    -0
      bubble-server/src/main/java/bubble/ApiConstants.java
  2. +2
    -1
      bubble-server/src/main/java/bubble/model/BubbleTags.java
  3. +2
    -2
      bubble-server/src/main/java/bubble/model/account/AccountContact.java
  4. +2
    -1
      bubble-server/src/main/java/bubble/model/account/AccountPolicy.java
  5. +3
    -1
      bubble-server/src/main/java/bubble/model/app/AppMessage.java
  6. +2
    -1
      bubble-server/src/main/java/bubble/model/app/AppRule.java
  7. +2
    -3
      bubble-server/src/main/java/bubble/model/app/BubbleApp.java
  8. +2
    -3
      bubble-server/src/main/java/bubble/model/app/RuleDriver.java
  9. +3
    -2
      bubble-server/src/main/java/bubble/model/cloud/AnsibleRole.java
  10. +2
    -1
      bubble-server/src/main/java/bubble/model/cloud/BubbleDomain.java
  11. +3
    -3
      bubble-server/src/main/java/bubble/model/cloud/BubbleFootprint.java
  12. +3
    -2
      bubble-server/src/main/java/bubble/model/cloud/CloudService.java
  13. +2
    -1
      bubble-server/src/main/java/bubble/model/cloud/CloudServiceData.java
  14. +3
    -2
      bubble-server/src/main/java/bubble/model/cloud/notify/NotificationBase.java

+ 4
- 0
bubble-server/src/main/java/bubble/ApiConstants.java ファイルの表示

@@ -2,6 +2,7 @@ package bubble;


import bubble.model.cloud.BubbleNode; import bubble.model.cloud.BubbleNode;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.warrenstrange.googleauth.GoogleAuthenticator; import com.warrenstrange.googleauth.GoogleAuthenticator;
import lombok.Getter; import lombok.Getter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -25,6 +26,7 @@ import static org.apache.http.HttpHeaders.USER_AGENT;
import static org.cobbzilla.util.daemon.ZillaRuntime.die; import static org.cobbzilla.util.daemon.ZillaRuntime.die;
import static org.cobbzilla.util.io.FileUtil.abs; import static org.cobbzilla.util.io.FileUtil.abs;
import static org.cobbzilla.util.io.StreamUtil.stream2string; import static org.cobbzilla.util.io.StreamUtil.stream2string;
import static org.cobbzilla.util.json.JsonUtil.COMPACT_MAPPER;
import static org.cobbzilla.util.json.JsonUtil.json; import static org.cobbzilla.util.json.JsonUtil.json;
import static org.cobbzilla.util.network.NetworkUtil.*; import static org.cobbzilla.util.network.NetworkUtil.*;
import static org.cobbzilla.wizard.resources.ResourceUtil.invalidEx; import static org.cobbzilla.wizard.resources.ResourceUtil.invalidEx;
@@ -38,6 +40,8 @@ public class ApiConstants {


private static final AtomicReference<String> bubbleDefaultDomain = new AtomicReference<>(); private static final AtomicReference<String> bubbleDefaultDomain = new AtomicReference<>();


public static final ObjectMapper DB_JSON_MAPPER = COMPACT_MAPPER;

private static String initDefaultDomain() { private static String initDefaultDomain() {
final File f = new File(HOME_DIR, ".BUBBLE_DEFAULT_DOMAIN"); final File f = new File(HOME_DIR, ".BUBBLE_DEFAULT_DOMAIN");
final String domain = FileUtil.toStringOrDie(f); final String domain = FileUtil.toStringOrDie(f);


+ 2
- 1
bubble-server/src/main/java/bubble/model/BubbleTags.java ファイルの表示

@@ -16,6 +16,7 @@ import javax.validation.constraints.Size;


import java.io.Serializable; import java.io.Serializable;


import static bubble.ApiConstants.DB_JSON_MAPPER;
import static org.cobbzilla.util.json.JsonUtil.json; import static org.cobbzilla.util.json.JsonUtil.json;
import static org.cobbzilla.wizard.model.crypto.EncryptedTypes.ENCRYPTED_STRING; import static org.cobbzilla.wizard.model.crypto.EncryptedTypes.ENCRYPTED_STRING;
import static org.cobbzilla.wizard.model.crypto.EncryptedTypes.ENC_PAD; import static org.cobbzilla.wizard.model.crypto.EncryptedTypes.ENC_PAD;
@@ -28,7 +29,7 @@ public class BubbleTags implements Serializable {
@JsonIgnore @Getter @Setter private String tagsJson; @JsonIgnore @Getter @Setter private String tagsJson;


@Transient public NameAndValue[] getTags() { return tagsJson == null ? null : json(tagsJson, NameAndValue[].class); } @Transient public NameAndValue[] getTags() { return tagsJson == null ? null : json(tagsJson, NameAndValue[].class); }
public BubbleTags setTags(NameAndValue[] tags) { return setTagsJson(tags == null ? null : json(tags)); }
public BubbleTags setTags(NameAndValue[] tags) { return setTagsJson(tags == null ? null : json(tags, DB_JSON_MAPPER)); }


public String getTag (String name) { public String getTag (String name) {
final NameAndValue[] tags = getTags(); final NameAndValue[] tags = getTags();


+ 2
- 2
bubble-server/src/main/java/bubble/model/account/AccountContact.java ファイルの表示

@@ -23,10 +23,10 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.function.Predicate; import java.util.function.Predicate;


import static bubble.ApiConstants.DB_JSON_MAPPER;
import static bubble.ApiConstants.G_AUTH; import static bubble.ApiConstants.G_AUTH;
import static java.util.UUID.randomUUID; import static java.util.UUID.randomUUID;
import static org.cobbzilla.util.daemon.ZillaRuntime.*; import static org.cobbzilla.util.daemon.ZillaRuntime.*;
import static org.cobbzilla.util.json.JsonUtil.COMPACT_MAPPER;
import static org.cobbzilla.util.json.JsonUtil.json; import static org.cobbzilla.util.json.JsonUtil.json;
import static org.cobbzilla.util.reflect.ReflectionUtil.copy; import static org.cobbzilla.util.reflect.ReflectionUtil.copy;
import static org.cobbzilla.wizard.model.Identifiable.UUID; import static org.cobbzilla.wizard.model.Identifiable.UUID;
@@ -143,7 +143,7 @@ public class AccountContact implements Serializable {


public static String getTotpInfo(Account account, BubbleConfiguration configuration) { public static String getTotpInfo(Account account, BubbleConfiguration configuration) {
final GoogleAuthenticatorKey creds = G_AUTH.createCredentials(); final GoogleAuthenticatorKey creds = G_AUTH.createCredentials();
return json(new TotpBean(creds, account, configuration), COMPACT_MAPPER);
return json(new TotpBean(creds, account, configuration), DB_JSON_MAPPER);
} }


private static void checkNickInUse(AccountContact c, AccountContact[] contacts) { private static void checkNickInUse(AccountContact c, AccountContact[] contacts) {


+ 2
- 1
bubble-server/src/main/java/bubble/model/account/AccountPolicy.java ファイルの表示

@@ -25,6 +25,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;


import static bubble.ApiConstants.DB_JSON_MAPPER;
import static bubble.model.account.AccountContact.contactMatch; import static bubble.model.account.AccountContact.contactMatch;
import static java.util.concurrent.TimeUnit.DAYS; import static java.util.concurrent.TimeUnit.DAYS;
import static java.util.concurrent.TimeUnit.MINUTES; import static java.util.concurrent.TimeUnit.MINUTES;
@@ -105,7 +106,7 @@ public class AccountPolicy extends IdentifiableBase implements HasAccount {
} }


@Transient public AccountContact[] getAccountContacts () { return accountContactsJson == null ? null : json(accountContactsJson, AccountContact[].class); } @Transient public AccountContact[] getAccountContacts () { return accountContactsJson == null ? null : json(accountContactsJson, AccountContact[].class); }
public AccountPolicy setAccountContacts(AccountContact[] contacts) { return setAccountContactsJson(contacts == null ? null : json(contacts)); }
public AccountPolicy setAccountContacts(AccountContact[] contacts) { return setAccountContactsJson(contacts == null ? null : json(contacts, DB_JSON_MAPPER)); }


public AccountPolicy setContact(AccountContact c) { return setContact(c, null, null); } public AccountPolicy setContact(AccountContact c) { return setContact(c, null, null); }




+ 3
- 1
bubble-server/src/main/java/bubble/model/app/AppMessage.java ファイルの表示

@@ -19,6 +19,7 @@ import javax.persistence.Entity;
import javax.persistence.Transient; import javax.persistence.Transient;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;


import static bubble.ApiConstants.DB_JSON_MAPPER;
import static bubble.ApiConstants.EP_MESSAGES; import static bubble.ApiConstants.EP_MESSAGES;
import static org.cobbzilla.util.daemon.ZillaRuntime.empty; import static org.cobbzilla.util.daemon.ZillaRuntime.empty;
import static org.cobbzilla.util.json.JsonUtil.json; import static org.cobbzilla.util.json.JsonUtil.json;
@@ -57,11 +58,12 @@ public class AppMessage extends IdentifiableBase implements AccountTemplate, Has
@Getter @Setter private String locale; @Getter @Setter private String locale;
public boolean hasLocale () { return !empty(locale); } public boolean hasLocale () { return !empty(locale); }


@Size(max=100000, message="err.appMessages.length")
@ECSearchable @ECField(index=40) @Column(length=100000, nullable=false) @ECSearchable @ECField(index=40) @Column(length=100000, nullable=false)
@JsonIgnore @Getter @Setter private String messagesJson; @JsonIgnore @Getter @Setter private String messagesJson;


@Transient public NameAndValue[] getMessages () { return messagesJson == null ? null : json(messagesJson, NameAndValue[].class); } @Transient public NameAndValue[] getMessages () { return messagesJson == null ? null : json(messagesJson, NameAndValue[].class); }
public AppMessage setMessages(NameAndValue[] messages) { return setMessagesJson(messages == null ? null : json(messages));}
public AppMessage setMessages(NameAndValue[] messages) { return setMessagesJson(messages == null ? null : json(messages, DB_JSON_MAPPER));}


@ECSearchable @ECField(index=50) @Column(nullable=false) @ECSearchable @ECField(index=50) @Column(nullable=false)
@ECIndex @Getter @Setter private Integer priority = 1; @ECIndex @Getter @Setter private Integer priority = 1;


+ 2
- 1
bubble-server/src/main/java/bubble/model/app/AppRule.java ファイルの表示

@@ -22,6 +22,7 @@ import javax.persistence.Entity;
import javax.persistence.Transient; import javax.persistence.Transient;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;


import static bubble.ApiConstants.DB_JSON_MAPPER;
import static bubble.ApiConstants.EP_RULES; import static bubble.ApiConstants.EP_RULES;
import static org.cobbzilla.util.json.JsonUtil.json; import static org.cobbzilla.util.json.JsonUtil.json;
import static org.cobbzilla.util.reflect.ReflectionUtil.copy; import static org.cobbzilla.util.reflect.ReflectionUtil.copy;
@@ -108,6 +109,6 @@ public class AppRule extends IdentifiableBaseParentEntity implements AppTemplate
@Override public Identifiable update(Identifiable other) { copy(this, other, UPDATE_FIELDS); return this; } @Override public Identifiable update(Identifiable other) { copy(this, other, UPDATE_FIELDS); return this; }


@Transient public JsonNode getConfig () { return json(configJson, JsonNode.class); } @Transient public JsonNode getConfig () { return json(configJson, JsonNode.class); }
public AppRule setConfig(JsonNode config) { return setConfigJson(json(config)); }
public AppRule setConfig(JsonNode config) { return setConfigJson(json(config, DB_JSON_MAPPER)); }


} }

+ 2
- 3
bubble-server/src/main/java/bubble/model/app/BubbleApp.java ファイルの表示

@@ -18,8 +18,7 @@ import javax.persistence.Entity;
import javax.persistence.Transient; import javax.persistence.Transient;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;


import static bubble.ApiConstants.APPS_ENDPOINT;
import static bubble.ApiConstants.EP_APPS;
import static bubble.ApiConstants.*;
import static org.cobbzilla.util.json.JsonUtil.json; import static org.cobbzilla.util.json.JsonUtil.json;
import static org.cobbzilla.util.reflect.ReflectionUtil.copy; import static org.cobbzilla.util.reflect.ReflectionUtil.copy;
import static org.cobbzilla.wizard.model.crypto.EncryptedTypes.ENCRYPTED_STRING; import static org.cobbzilla.wizard.model.crypto.EncryptedTypes.ENCRYPTED_STRING;
@@ -79,7 +78,7 @@ public class BubbleApp extends IdentifiableBaseParentEntity implements AccountTe
@JsonIgnore @Getter @Setter private String dataConfigJson; @JsonIgnore @Getter @Setter private String dataConfigJson;


@Transient public AppDataConfig getDataConfig () { return dataConfigJson == null ? null : json(dataConfigJson, AppDataConfig.class); } @Transient public AppDataConfig getDataConfig () { return dataConfigJson == null ? null : json(dataConfigJson, AppDataConfig.class); }
public BubbleApp setDataConfig (AppDataConfig adc) { return setDataConfigJson(adc == null ? null : json(adc)); }
public BubbleApp setDataConfig (AppDataConfig adc) { return setDataConfigJson(adc == null ? null : json(adc, DB_JSON_MAPPER)); }
public boolean hasDataConfig () { return getDataConfig() != null; } public boolean hasDataConfig () { return getDataConfig() != null; }


@ECSearchable @ECField(index=60) @ECSearchable @ECField(index=60)


+ 2
- 3
bubble-server/src/main/java/bubble/model/app/RuleDriver.java ファイルの表示

@@ -22,8 +22,7 @@ import javax.persistence.Embedded;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Transient; import javax.persistence.Transient;


import static bubble.ApiConstants.DRIVERS_ENDPOINT;
import static bubble.ApiConstants.EP_DRIVERS;
import static bubble.ApiConstants.*;
import static org.cobbzilla.util.json.JsonUtil.json; import static org.cobbzilla.util.json.JsonUtil.json;
import static org.cobbzilla.util.reflect.ReflectionUtil.copy; import static org.cobbzilla.util.reflect.ReflectionUtil.copy;
import static org.cobbzilla.util.reflect.ReflectionUtil.instantiate; import static org.cobbzilla.util.reflect.ReflectionUtil.instantiate;
@@ -85,7 +84,7 @@ public class RuleDriver extends IdentifiableBase implements AccountTemplate {
@Column(length=100000) @ECField(index=80) @Column(length=100000) @ECField(index=80)
@JsonIgnore @Getter @Setter private String userConfigJson; @JsonIgnore @Getter @Setter private String userConfigJson;


@Transient public RuleDriver setUserConfig (JsonNode json) { return setUserConfigJson(json(json)); }
@Transient public RuleDriver setUserConfig (JsonNode json) { return setUserConfigJson(json(json, DB_JSON_MAPPER)); }
public JsonNode getUserConfig () { return json(userConfigJson, JsonNode.class); } public JsonNode getUserConfig () { return json(userConfigJson, JsonNode.class); }


@Transient @JsonIgnore @Getter(lazy=true) private final AppRuleDriver driver = instantiate(this.driverClass); @Transient @JsonIgnore @Getter(lazy=true) private final AppRuleDriver driver = instantiate(this.driverClass);


+ 3
- 2
bubble-server/src/main/java/bubble/model/cloud/AnsibleRole.java ファイルの表示

@@ -19,6 +19,7 @@ import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import java.util.Arrays; import java.util.Arrays;


import static bubble.ApiConstants.DB_JSON_MAPPER;
import static bubble.ApiConstants.EP_ROLES; import static bubble.ApiConstants.EP_ROLES;
import static bubble.cloud.storage.StorageServiceDriver.STORAGE_PREFIX; import static bubble.cloud.storage.StorageServiceDriver.STORAGE_PREFIX;
import static org.cobbzilla.util.json.JsonUtil.json; import static org.cobbzilla.util.json.JsonUtil.json;
@@ -104,14 +105,14 @@ public class AnsibleRole extends IdentifiableBase implements AccountTemplate, Ha
public boolean hasConfig () { return configJson != null; } public boolean hasConfig () { return configJson != null; }


@Transient public NameAndValue[] getConfig () { return configJson == null ? null : json(configJson, NameAndValue[].class); } @Transient public NameAndValue[] getConfig () { return configJson == null ? null : json(configJson, NameAndValue[].class); }
public AnsibleRole setConfig(NameAndValue[] config) { return setConfigJson(config == null ? null : json(config)); }
public AnsibleRole setConfig(NameAndValue[] config) { return setConfigJson(config == null ? null : json(config, DB_JSON_MAPPER)); }


@Column(updatable=false, length=1000) @ECField(index=80) @Column(updatable=false, length=1000) @ECField(index=80)
@JsonIgnore @Getter @Setter private String optionalConfigNamesJson; @JsonIgnore @Getter @Setter private String optionalConfigNamesJson;
public boolean hasOptionalConfigNames () { return optionalConfigNamesJson != null; } public boolean hasOptionalConfigNames () { return optionalConfigNamesJson != null; }


@Transient public String[] getOptionalConfigNames() { return optionalConfigNamesJson == null ? null : json(optionalConfigNamesJson, String[].class); } @Transient public String[] getOptionalConfigNames() { return optionalConfigNamesJson == null ? null : json(optionalConfigNamesJson, String[].class); }
public AnsibleRole setOptionalConfigNames(String[] names) { return setOptionalConfigNamesJson(name == null ? null : json(names)); }
public AnsibleRole setOptionalConfigNames(String[] names) { return setOptionalConfigNamesJson(name == null ? null : json(names, DB_JSON_MAPPER)); }


// The Base64-encoded .tgz archive for the role directory. all paths should start with roles/<role-name>/... // The Base64-encoded .tgz archive for the role directory. all paths should start with roles/<role-name>/...
// Then after it is stored (in AnsibleRoleDAO.preCreate), this becomes storage://CloudServiceName/path // Then after it is stored (in AnsibleRoleDAO.preCreate), this becomes storage://CloudServiceName/path


+ 2
- 1
bubble-server/src/main/java/bubble/model/cloud/BubbleDomain.java ファイルの表示

@@ -25,6 +25,7 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;


import static bubble.ApiConstants.DB_JSON_MAPPER;
import static bubble.ApiConstants.EP_DOMAINS; import static bubble.ApiConstants.EP_DOMAINS;
import static bubble.model.cloud.AnsibleRole.sameRoleName; import static bubble.model.cloud.AnsibleRole.sameRoleName;
import static org.apache.commons.lang3.StringUtils.countMatches; import static org.apache.commons.lang3.StringUtils.countMatches;
@@ -104,7 +105,7 @@ public class BubbleDomain extends IdentifiableBase implements AccountTemplate {
public boolean hasRoles () { return !empty(getRoles()); } public boolean hasRoles () { return !empty(getRoles()); }


@Transient public String[] getRoles () { return rolesJson == null ? null : json(rolesJson, String[].class); } @Transient public String[] getRoles () { return rolesJson == null ? null : json(rolesJson, String[].class); }
public BubbleDomain setRoles (String[] roles) { return setRolesJson(roles == null ? null : json(roles)); }
public BubbleDomain setRoles (String[] roles) { return setRolesJson(roles == null ? null : json(roles, DB_JSON_MAPPER)); }


public String findRole(String r) { return AnsibleRole.findRole(getRoles(), r); } public String findRole(String r) { return AnsibleRole.findRole(getRoles(), r); }




+ 3
- 3
bubble-server/src/main/java/bubble/model/cloud/BubbleFootprint.java ファイルの表示

@@ -23,8 +23,8 @@ import java.util.HashSet;
import java.util.Set; import java.util.Set;
import java.util.function.Function; import java.util.function.Function;


import static bubble.ApiConstants.DB_JSON_MAPPER;
import static bubble.ApiConstants.EP_FOOTPRINTS; import static bubble.ApiConstants.EP_FOOTPRINTS;
import static org.cobbzilla.util.daemon.ZillaRuntime.bool;
import static org.cobbzilla.util.daemon.ZillaRuntime.die; import static org.cobbzilla.util.daemon.ZillaRuntime.die;
import static org.cobbzilla.util.json.JsonUtil.json; import static org.cobbzilla.util.json.JsonUtil.json;
import static org.cobbzilla.util.reflect.ReflectionUtil.copy; import static org.cobbzilla.util.reflect.ReflectionUtil.copy;
@@ -90,7 +90,7 @@ public class BubbleFootprint extends IdentifiableBase implements AccountTemplate
public boolean hasAllowedCountries () { return allowedCountriesJson != null; } public boolean hasAllowedCountries () { return allowedCountriesJson != null; }


@Transient public String[] getAllowedCountries () { return allowedCountriesJson == null ? null : json(allowedCountriesJson, String[].class); } @Transient public String[] getAllowedCountries () { return allowedCountriesJson == null ? null : json(allowedCountriesJson, String[].class); }
public BubbleFootprint setAllowedCountries (String[] countries) { return setAllowedCountriesJson(countries == null ? null : json(countries)); }
public BubbleFootprint setAllowedCountries (String[] countries) { return setAllowedCountriesJson(countries == null ? null : json(countries, DB_JSON_MAPPER)); }


@ECSearchable @ECField(index=70) @ECSearchable @ECField(index=70)
@Size(max=5000, message="err.disallowedCountriesJson.length") @Size(max=5000, message="err.disallowedCountriesJson.length")
@@ -99,7 +99,7 @@ public class BubbleFootprint extends IdentifiableBase implements AccountTemplate
public boolean hasDisallowedCountries () { return disallowedCountriesJson != null; } public boolean hasDisallowedCountries () { return disallowedCountriesJson != null; }


@Transient public String[] getDisallowedCountries () { return disallowedCountriesJson == null ? null : json(disallowedCountriesJson, String[].class); } @Transient public String[] getDisallowedCountries () { return disallowedCountriesJson == null ? null : json(disallowedCountriesJson, String[].class); }
public BubbleFootprint setDisallowedCountries (String[] countries) { return setDisallowedCountriesJson(countries == null ? null : json(countries)); }
public BubbleFootprint setDisallowedCountries (String[] countries) { return setDisallowedCountriesJson(countries == null ? null : json(countries, DB_JSON_MAPPER)); }


public void addDisallowedCountries(String[] countries) { public void addDisallowedCountries(String[] countries) {
final Set<String> disallowed = hasDisallowedCountries() ? new HashSet<>(Arrays.asList(getDisallowedCountries())) : new HashSet<>(); final Set<String> disallowed = hasDisallowedCountries() ? new HashSet<>(Arrays.asList(getDisallowedCountries())) : new HashSet<>();


+ 3
- 2
bubble-server/src/main/java/bubble/model/cloud/CloudService.java ファイルの表示

@@ -44,6 +44,7 @@ import java.util.Iterator;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;


import static bubble.ApiConstants.DB_JSON_MAPPER;
import static bubble.ApiConstants.EP_CLOUDS; import static bubble.ApiConstants.EP_CLOUDS;
import static bubble.cloud.storage.local.LocalStorageDriver.LOCAL_STORAGE; import static bubble.cloud.storage.local.LocalStorageDriver.LOCAL_STORAGE;
import static org.cobbzilla.util.daemon.ZillaRuntime.*; import static org.cobbzilla.util.daemon.ZillaRuntime.*;
@@ -144,14 +145,14 @@ public class CloudService extends IdentifiableBaseParentEntity implements Accoun
public boolean hasDriverConfig () { return !empty(driverConfigJson); } public boolean hasDriverConfig () { return !empty(driverConfigJson); }


@Transient public JsonNode getDriverConfig () { return json(driverConfigJson, JsonNode.class); } @Transient public JsonNode getDriverConfig () { return json(driverConfigJson, JsonNode.class); }
public CloudService setDriverConfig (JsonNode node) { return setDriverConfigJson(node == null ? null : json(node)); }
public CloudService setDriverConfig (JsonNode node) { return setDriverConfigJson(node == null ? null : json(node, DB_JSON_MAPPER)); }


@Size(max=10000, message="err.credentialsJson.length") @Size(max=10000, message="err.credentialsJson.length")
@Type(type=ENCRYPTED_STRING) @Column(columnDefinition="varchar("+(10000+ENC_PAD)+")") @Type(type=ENCRYPTED_STRING) @Column(columnDefinition="varchar("+(10000+ENC_PAD)+")")
@JsonIgnore @Getter @Setter private String credentialsJson; @JsonIgnore @Getter @Setter private String credentialsJson;


@Transient public CloudCredentials getCredentials () { return credentialsJson == null ? null : json(credentialsJson, CloudCredentials.class); } @Transient public CloudCredentials getCredentials () { return credentialsJson == null ? null : json(credentialsJson, CloudCredentials.class); }
public CloudService setCredentials (CloudCredentials credentials) { return setCredentialsJson(credentials == null ? null : json(credentials)); }
public CloudService setCredentials (CloudCredentials credentials) { return setCredentialsJson(credentials == null ? null : json(credentials, DB_JSON_MAPPER)); }
public boolean hasCredentials () { public boolean hasCredentials () {
final CloudCredentials creds = getCredentials(); final CloudCredentials creds = getCredentials();
return creds != null && !empty(creds.getParams()); return creds != null && !empty(creds.getParams());


+ 2
- 1
bubble-server/src/main/java/bubble/model/cloud/CloudServiceData.java ファイルの表示

@@ -19,6 +19,7 @@ import javax.persistence.Entity;
import javax.persistence.Transient; import javax.persistence.Transient;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;


import static bubble.ApiConstants.DB_JSON_MAPPER;
import static bubble.ApiConstants.EP_DATA; import static bubble.ApiConstants.EP_DATA;
import static org.cobbzilla.util.json.JsonUtil.json; import static org.cobbzilla.util.json.JsonUtil.json;
import static org.cobbzilla.util.reflect.ReflectionUtil.copy; import static org.cobbzilla.util.reflect.ReflectionUtil.copy;
@@ -60,7 +61,7 @@ public class CloudServiceData extends IdentifiableBase implements HasAccount {
@Getter @Setter private String data; @Getter @Setter private String data;


@Transient public JsonNode getDataJson () { return data == null ? null : json(data, JsonNode.class); } @Transient public JsonNode getDataJson () { return data == null ? null : json(data, JsonNode.class); }
public CloudServiceData setDataJson(JsonNode n) { return setData(n == null ? null : json(n)); }
public CloudServiceData setDataJson(JsonNode n) { return setData(n == null ? null : json(n, DB_JSON_MAPPER)); }


@ECSearchable @ECField(index=50, type=EntityFieldType.expiration_time) @ECSearchable @ECField(index=50, type=EntityFieldType.expiration_time)
@ECIndex @Getter @Setter private Long expiration; @ECIndex @Getter @Setter private Long expiration;


+ 3
- 2
bubble-server/src/main/java/bubble/model/cloud/notify/NotificationBase.java ファイルの表示

@@ -19,6 +19,7 @@ import org.hibernate.annotations.Type;


import javax.persistence.*; import javax.persistence.*;


import static bubble.ApiConstants.DB_JSON_MAPPER;
import static bubble.ApiConstants.ERROR_MAXLEN; import static bubble.ApiConstants.ERROR_MAXLEN;
import static org.cobbzilla.util.daemon.ZillaRuntime.bool; import static org.cobbzilla.util.daemon.ZillaRuntime.bool;
import static org.cobbzilla.util.daemon.ZillaRuntime.errorString; import static org.cobbzilla.util.daemon.ZillaRuntime.errorString;
@@ -68,7 +69,7 @@ public class NotificationBase extends IdentifiableBase implements HasAccountNoNa
public boolean hasPayload () { return payloadJson != null; } public boolean hasPayload () { return payloadJson != null; }


@Transient public JsonNode getPayload () { return json(payloadJson, JsonNode.class); } @Transient public JsonNode getPayload () { return json(payloadJson, JsonNode.class); }
public <T extends NotificationBase> T setPayload (JsonNode payload) { return (T) setPayloadJson(json(payload)); }
public <T extends NotificationBase> T setPayload (JsonNode payload) { return (T) setPayloadJson(json(payload, DB_JSON_MAPPER)); }


@Transient @JsonIgnore public BubbleNode getNode() { return json(payloadJson, BubbleNode.class); } @Transient @JsonIgnore public BubbleNode getNode() { return json(payloadJson, BubbleNode.class); }


@@ -81,7 +82,7 @@ public class NotificationBase extends IdentifiableBase implements HasAccountNoNa
@JsonIgnore @Getter @Setter private String receiptJson; @JsonIgnore @Getter @Setter private String receiptJson;


@Transient public NotificationReceipt getReceipt () { return receiptJson == null ? null : json(receiptJson, NotificationReceipt.class); } @Transient public NotificationReceipt getReceipt () { return receiptJson == null ? null : json(receiptJson, NotificationReceipt.class); }
public <T extends NotificationBase> T setReceipt (NotificationReceipt receipt) { return (T) setReceiptJson(receipt == null ? null : json(receiptJson)); }
public <T extends NotificationBase> T setReceipt (NotificationReceipt receipt) { return (T) setReceiptJson(receipt == null ? null : json(receiptJson, DB_JSON_MAPPER)); }


@ECSearchable(filter=true) @ECField(index=100) @ECSearchable(filter=true) @ECField(index=100)
@Type(type=ENCRYPTED_STRING) @Column(updatable=false, columnDefinition="varchar("+(ERROR_MAXLEN+ENC_PAD)+")") @Type(type=ENCRYPTED_STRING) @Column(updatable=false, columnDefinition="varchar("+(ERROR_MAXLEN+ENC_PAD)+")")


読み込み中…
キャンセル
保存