in plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/actions/SetPropertyAction.java [92:139]
private Object getPropertyValue(Action action, Event event) {
Object propertyValue = action.getParameterValues().get("setPropertyValue");
if (propertyValue == null) {
propertyValue = action.getParameterValues().get("setPropertyValueMultiple");
}
Object propertyValueInteger = action.getParameterValues().get("setPropertyValueInteger");
Object setPropertyValueMultiple = action.getParameterValues().get("setPropertyValueMultiple");
Object setPropertyValueBoolean = action.getParameterValues().get("setPropertyValueBoolean");
Object setPropertyValueCurrentEventTimestamp = action.getParameterValues().get("setPropertyValueCurrentEventTimestamp");
Object setPropertyValueCurrentDate = action.getParameterValues().get("setPropertyValueCurrentDate");
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
format.setTimeZone(TimeZone.getTimeZone("UTC"));
if (propertyValue == null) {
if (propertyValueInteger != null) {
propertyValue = PropertyHelper.getInteger(propertyValueInteger);
}
if (setPropertyValueMultiple != null) {
propertyValue = setPropertyValueMultiple;
}
if (setPropertyValueBoolean != null) {
propertyValue = PropertyHelper.getBooleanValue(setPropertyValueBoolean);
}
if (setPropertyValueCurrentEventTimestamp != null && PropertyHelper.getBooleanValue(setPropertyValueCurrentEventTimestamp)) {
propertyValue = format.format(event.getTimeStamp());
}
if (setPropertyValueCurrentDate != null && PropertyHelper.getBooleanValue(setPropertyValueCurrentDate)) {
propertyValue = format.format(new Date());
}
}
if (propertyValue != null && propertyValue.equals("now")) {
// TODO Temporary solution that should be handle by: https://issues.apache.org/jira/browse/UNOMI-630 (Implement a global solution to avoid multiple same log pollution.)
// warn every 6 hours to avoid log pollution
long timeStamp = nowDeprecatedLogTimestamp.get();
long currentTimeStamp = new Date().getTime();
if (timeStamp == 0 || (timeStamp + TimeUnit.HOURS.toMillis(6) < currentTimeStamp)) {
LOGGER.warn("SetPropertyAction with setPropertyValue: 'now' is deprecated, " +
"please use 'setPropertyValueCurrentEventTimestamp' or 'setPropertyValueCurrentDate' instead of 'setPropertyValue'");
nowDeprecatedLogTimestamp.set(currentTimeStamp);
}
propertyValue = format.format(event.getTimeStamp());
}
return propertyValue;
}