Skip to content

Commit

Permalink
Merge pull request #193 from scireum/aha/FixxyFix
Browse files Browse the repository at this point in the history
Aha/fixxy fix
  • Loading branch information
andyHa authored Oct 29, 2018
2 parents 8ac5833 + 84d4d14 commit 28e2ec6
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 3 deletions.
24 changes: 24 additions & 0 deletions src/main/java/sirius/biz/codelists/CodeList.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,17 @@
import sirius.biz.jdbc.BizEntity;
import sirius.biz.web.Autoloaded;
import sirius.db.mixing.Mapping;
import sirius.db.mixing.annotations.AfterDelete;
import sirius.db.mixing.annotations.AfterSave;
import sirius.db.mixing.annotations.BeforeSave;
import sirius.db.mixing.annotations.Length;
import sirius.db.mixing.annotations.NullAllowed;
import sirius.db.mixing.annotations.Trim;
import sirius.db.mixing.annotations.Unique;
import sirius.kernel.commons.Strings;
import sirius.kernel.di.std.Framework;
import sirius.kernel.di.std.Part;
import sirius.kernel.health.Exceptions;

/**
* Represents a list for name value pairs which can be managed by the user.
Expand Down Expand Up @@ -64,6 +70,24 @@ public class CodeList extends BizEntity {
@Autoloaded
private boolean autofill = true;

@Part
private static CodeLists codeLists;

@BeforeSave
protected void checkName() {
if (Strings.isFilled(code) && code.contains("|")) {
throw Exceptions.createHandled().withNLSKey("CodeList.noPipeAllowed").handle();
}
}

@AfterSave
@AfterDelete
protected void flushCache() {
if (!isNew()) {
codeLists.valueCache.clear();
}
}

public String getCode() {
return code;
}
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/sirius/biz/codelists/CodeListEntry.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,15 @@
import sirius.biz.jdbc.BizEntity;
import sirius.db.jdbc.SQLEntityRef;
import sirius.db.mixing.Mapping;
import sirius.db.mixing.annotations.AfterDelete;
import sirius.db.mixing.annotations.AfterSave;
import sirius.db.mixing.annotations.Length;
import sirius.db.mixing.annotations.NullAllowed;
import sirius.db.mixing.annotations.Trim;
import sirius.db.mixing.annotations.Unique;
import sirius.kernel.commons.Value;
import sirius.kernel.di.std.Framework;
import sirius.kernel.di.std.Part;
import sirius.kernel.di.std.Priorized;

/**
Expand Down Expand Up @@ -73,6 +76,17 @@ public class CodeListEntry extends BizEntity {
@NullAllowed
private String description;

@Part
private static CodeLists codeLists;

@AfterSave
@AfterDelete
protected void flushCache() {
if (!isNew()) {
codeLists.valueCache.clear();
}
}

/**
* Returns the value of the entry which is translated via
* {@link Value#translate()}.
Expand Down
9 changes: 8 additions & 1 deletion src/main/java/sirius/biz/codelists/CodeLists.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import sirius.db.jdbc.OMA;
import sirius.db.jdbc.SQLEntity;
import sirius.kernel.Sirius;
import sirius.kernel.cache.Cache;
import sirius.kernel.cache.CacheManager;
import sirius.kernel.commons.Explain;
import sirius.kernel.commons.Strings;
import sirius.kernel.commons.Tuple;
Expand Down Expand Up @@ -42,11 +44,14 @@ public class CodeLists {
*/
public static final String FRAMEWORK_CODE_LISTS = "biz.code-lists";

protected Cache<String, String> valueCache = CacheManager.createCoherentCache("codelists-values");

@Part
private OMA oma;

private static final Log LOG = Log.get("codelists");


/**
* Returns the value translated from the given code list associated with the given code.
* <p>
Expand Down Expand Up @@ -78,7 +83,9 @@ public String getValue(@Nonnull String codeList, @Nullable String code) {
return null;
}

return getValues(codeList, code).getFirst();
return valueCache.get(codeList + "|" + code, ignored -> {
return getValues(codeList, code).getFirst();
});
}

/**
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/sirius/biz/tenants/SAMLController.java
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@ public void samlLogin(WebContext ctx) {
verifyUser(response, user);
}


UserContext userContext = UserContext.get();
userContext.setCurrentUser(user);
manager.onExternalLogin(ctx, user);
Expand Down Expand Up @@ -181,7 +180,7 @@ private boolean isInList(String values, String valueToCheck) {
}

for (String value : values.split(",")) {
if (Strings.isFilled(value) && Strings.areEqual(value, valueToCheck)) {
if (Strings.isFilled(value) && value.equalsIgnoreCase(valueToCheck)) {
return true;
}
}
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/biz_de.properties
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ CodeListController.codeMustBeFilled = Das Feld "Code" darf nicht leer sein.
CodeListEntry.additionalValue = Zusatzwert
CodeListEntry.plural = Einträge
CodeListEntry.value = Wert
CodeList.noPipeAllowed = Das Feld "Code" darf nicht das Zeichen '|' enthalten.
ContactData.email = Mail
ContactData.fax = FAX
ContactData.invalidPhone = Fehler im Feld '${field}': '${value}' is keine gültige Nummer.
Expand Down
5 changes: 5 additions & 0 deletions src/main/resources/component-biz.conf
Original file line number Diff line number Diff line change
Expand Up @@ -491,6 +491,11 @@ cache {
ttl = 1 hour
}

codelists-values {
maxSize = 4096
ttl = 1 hour
}

}

# Specifies thread pools used by the biz platform
Expand Down

0 comments on commit 28e2ec6

Please sign in to comment.