Hi,
This script can calculate in minutes, how much time did it take to close an event.
I need to add to this script "skipweekend = Friday and saturday" and skip hours that are not work hours [ work hours = 8 – 17]
Can you please help me with this request?
Thanks a lot.
Best regards
Arige
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.core.util.DateUtils
import org.apache.log4j.Logger
import org.apache.log4j.Level
import java.text.SimpleDateFormat
import java.util.Date
import java.util.concurrent.TimeUnit
import java.lang.Object
//try
//{
//java.sql.Timestamp start
//java.sql.Timestamp end
def log = Logger.getLogger("com.ayalon.test2")
log.setLevel(Level.ERROR)
def start = issue.getCustomFieldValue(ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("האירוע החל ב"))
log.debug "Comment Author: " + start;
def end = issue.getCustomFieldValue(ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("אירוע הסתיים ב"))
log.debug "Comment Author: " + end;
if (start == null) return -1
if (end == null) return -1
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startDate = formatter.parse(start.toString());
Date endDate = formatter.parse(end.toString());
log.debug "string of startDate" + startDate;
log.debug "string of endDate" + endDate;
long timepassed = (endDate.getTime() - startDate.getTime());
log.debug "Comment Author: " + timepassed;
long minutes = TimeUnit.MILLISECONDS.toMinutes(timepassed);
log.debug minutes
//def diff = (endDate.getTime() - startDate.getTime())/1000/60
//return startDate.getTime().doubleValue()
return minutes
//}catch(e){return 0}
Hi Arige,
I've posted a snippet here with a script that should do this: https://bitbucket.org/snippets/Adaptavist/6egg5E. It is quite a substantial script but hopefully it's relatively clear what it's doing. All you need to add to it is your own code for fetching the two date values in the first place: put that code in the place where the "//code code code" comment is in the script.
Regards,
J
thanks for your help.
i tru it but nothing happened and it calculate nothing
here the script i added
is there something wrong that i am doing?
import groovy.transform.Field
import java.time.*;
import static java.time.DayOfWeek.*;
import static java.time.temporal.ChronoUnit.*;
import static java.time.LocalTime.MIDNIGHT
import static java.time.temporal.TemporalAdjusters.previousOrSame
import static java.time.temporal.TemporalAdjusters.next
@Field def WEEKEND_DAYS = [FRIDAY, SATURDAY]
@Field int WORK_DAY_START_HOUR = 8
@Field int WORK_DAY_END_HOUR = 17
@Field LocalTime WORK_DAY_START = LocalTime.of(WORK_DAY_START_HOUR, 0)
@Field LocalTime WORK_DAY_END = LocalTime.of(WORK_DAY_END_HOUR, 0)
@Field long WORK_DAY_SECONDS = SECONDS.between(WORK_DAY_START, WORK_DAY_END)
Date startDate
Date endDate
// Set values of startDate and endDate here...
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.core.util.DateUtils
import org.apache.log4j.Logger
import org.apache.log4j.Level
import java.text.SimpleDateFormat
import java.util.Date
import java.util.concurrent.TimeUnit
import java.lang.Object
//try
//{
//java.sql.Timestamp start
//java.sql.Timestamp end
def log = Logger.getLogger("com.ayalon.test2")
log.setLevel(Level.DEBUG)
def start = issue.getCustomFieldValue(ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("האירוע החל ב"))
log.debug "Comment Author: " + start;
def end = issue.getCustomFieldValue(ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("אירוע הסתיים ב"))
log.debug "Comment Author: " + end;
if (start == null) return -1
if (end == null) return -1
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startDate = formatter.parse(start.toString());
Date endDate = formatter.parse(end.toString());
log.debug "string of startDate" + startDate;
log.debug "string of endDate" + endDate;
long timepassed = (endDate.getTime() - startDate.getTime());
log.debug "Comment Author: " + timepassed;
long minutes = TimeUnit.MILLISECONDS.toMinutes(timepassed);
log.debug minutes
//def diff = (endDate.getTime() - startDate.getTime())/1000/60
//return startDate.getTime().doubleValue()
return minutes
//}catch(e){return 0}
def start = LocalDateTime.ofInstant(startDate.toInstant(), ZoneId.systemDefault())
def end = LocalDateTime.ofInstant(endDate.toInstant(), ZoneId.systemDefault())
/* We normalise the time range to (almost) a whole number of weeks, going from the
immediately preceding Sunday midnight to the immediately following Friday midnight,
while keeping track of how much extra time we add by doing so. The total time can
then be calculated as a simple multiple of the number of weeks, minus the additional
time introduced by normalisation. */
def startCorrectionSeconds
def sundayMidnightBeforeStart = start.with(previousOrSame(SUNDAY)).with(MIDNIGHT)
if (start.dayOfWeek in WEEKEND_DAYS) {
/* If it's the weekend then we're always adding five full working days' worth
of seconds. */
startCorrectionSeconds = 5 * WORK_DAY_SECONDS
} else {
/* Otherwise we calculate the number of full working days preceding, convert
to seconds, and add the number of extra seconds in the current, incomplete day. */
def secondsSinceWorkDayStart = clampSeconds(SECONDS.between(WORK_DAY_START, start.toLocalTime()))
def daysSinceSunday = DAYS.between(sundayMidnightBeforeStart, start)
startCorrectionSeconds = daysSinceSunday * WORK_DAY_SECONDS + secondsSinceWorkDayStart
}
def endCorrectionSeconds
def fridayMidnightAfterEnd = end.with(next(FRIDAY)).with(MIDNIGHT)
//Have to special-case Sunday midnight to avoid double counting
if (end.dayOfWeek in WEEKEND_DAYS || end.dayOfWeek == SUNDAY && end.toLocalTime() == MIDNIGHT) {
/* If it's the weekend then we're always adding five full working days' worth
of seconds. */
endCorrectionSeconds = 5 * WORK_DAY_SECONDS
} else {
/* Otherwise we calculate the number of full working days following, convert
to seconds, and add the number of extra seconds in the current, incomplete day. */
def secondsUntilWorkDayEnd = clampSeconds(SECONDS.between(end.toLocalTime(), WORK_DAY_END))
def daysUntilFriday = DAYS.between(end, fridayMidnightAfterEnd)
endCorrectionSeconds = secondsUntilWorkDayEnd + daysUntilFriday * WORK_DAY_SECONDS
}
def daysBetween = DAYS.between(sundayMidnightBeforeStart, fridayMidnightAfterEnd)
/* We're measuring from Sunday midnight to Friday midnight, so we always expect
to get a positive number of days which is two fewer than a whole number of weeks. */
assert daysBetween > 0 && (daysBetween + 2) % 7 == 0
/* Add 2 to get a multiple of 7, divide by 7 to get number of weeks, multiply by 5
to get number of work days. */
def workDaysBetween = ((daysBetween + 2) / 7) * 5
log.info([workDaysBetween, startCorrectionSeconds, endCorrectionSeconds])
def secondsBetween = workDaysBetween * WORK_DAY_SECONDS - (startCorrectionSeconds + endCorrectionSeconds)
return Math.round(secondsBetween / 60.0 as Double)
//***************************************************
/* If a time falls before the start, or after the end, of a work day, then the
difference between that time and the start/end of the day might be negative, or
larger than the length of a work day.
In either case we only want to count the seconds that are part of the work day,
so we use this function to restrict the value into that range. */
long clampSeconds(long seconds) {
Math.max(0, Math.min(WORK_DAY_SECONDS, seconds))
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Arige,
You don't need to paste the entirety of your previous script into the middle of the new one: you just need the part where you fetch the values of the two date fields. Pasting in the return statement is a particularly bad idea as that will just abort the script halfway through without doing any of the actual calculation.
Regards,
J
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
HI'
thank for the response
After trying to paste just the part where i fetch the values of the two date fields, i get 2 errorrs see screenshots attached.
can you tell me please what i am still doing wrong
thank
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Arige,
It looks like the problem here is that the values you retrieve from the issue are getting stored in the "start" and "end" variables, whereas they should be stored in the "startDate" and "endDate" variables, as pointed out in the preceding code comment. You should be able to resolve this by changing these lines:
def start = issue.getCustomFieldValue(...)
def end = issue.getCustomFieldValue(...)
if (start == null) ...
if (end == null) ...
to these:
startDate = issue.getCustomFieldValue(...)
def end = issue.getCustomFieldValue(...)
if (startDate == null) ...
if (endDate == null) ...
Regards,
J
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi
i changed these line as you can see in the screenshot attached below, but unfortunately still getting error ....
please your help
thanks a lot
best regard
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi
after trying some changes, i finally get a script without error [see screenshot] but unfortunately it gives me the same result for all issues [-1] see also screenshots attached
thanks
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Arige,
Apologies, I got the code slightly wrong. The four lines I asked you to paste should have been:
startDate = issue.getCustomFieldValue(...)
endDate = issue.getCustomFieldValue(...)
if (startDate == null) return -1
if (endDate == null) return -1
Note that the first two variable assignments deliberately do not start with 'def', because those variables have already been declared. Do not add 'def' to the beginning of those lines.
Regards,
J
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi
still got error...
but if i add 'def' to the beginning of those lines and dont add it to lines 40/41 that gives me no error but the result of this script turn always minus 1 in the custum field for all issues [see screenshots attached to previous last email send on 2 sep
thanks for the help
best regards
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Arige,
I think those 'errors' are just warnings from the static type checker, and should not cause any problems when the script actually runs. Can you hover over them with your mouse and show me what pops up?
J
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi
I think you are right...
see screenshot attached to this mail where you can see what pops up from these error...
if i run the script it won't cause any problem right?
thanks a lot for your assistance and your help
best regards
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
one more question please to be sure that this script calculate what we need:
this script does not count weekend days = Friday and saturday
and it gives me the value in minutes not in seconds
right?
thanks again
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Arige,
No, those warnings will not cause any problems when the script actually runs.
Yes, the script excludes Friday and Saturday ('the weekend').
Yes, the script produces an answer in minutes. It does all of its internal calculations in seconds but then divides by 60 at the end to give a result in minutes.
Glad I could be of help!
J
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi
After running the script, the result is perfect ant it worked but when i add this field to a column in the issue search i get an error just in the forth page of the result i get.
see screenshots attached that describes what i get
Syntax Help
SearchSearchBasic
151–200 of 654Refresh results
Columns
An error occurred whilst rendering this message. Please contact the administrators, and inform them of this bug. Details: ------- org.apache.velocity.exception.MethodInvocationException: Invocation of method 'getHtml' in class com.atlassian.jira.issue.fields.layout.column.ColumnLayoutItemImpl threw exception Assertion failed: assert daysBetween > 0 && (daysBetween + 2) % 7 == 0 | | | -2 | false false at templates/jira/issue/table/macros.vm[line 117, column 34] at org.apache.velocity.runtime.parser.node.ASTMethod.handleInvocationException(ASTMethod.java:351) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:284) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:262) at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:507) at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71) at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.directive.Foreach.performIteration(Foreach.java:393) at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:316) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:212) at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:247) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.apache.velocity.Template.merge(Template.java:328) at org.apache.velocity.Template.merge(Template.java:235) at org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:381) at com.atlassian.velocity.DefaultVelocityManager.writeEncodedBodyImpl(DefaultVelocityManager.java:117) at com.atlassian.velocity.DefaultVelocityManager.writeEncodedBody(DefaultVelocityManager.java:97) at com.atlassian.jira.template.velocity.DefaultVelocityTemplatingEngine$DefaultRenderRequest.toWriterImpl(DefaultVelocityTemplatingEngine.java:122) at com.atlassian.jira.template.velocity.DefaultVelocityTemplatingEngine$DefaultRenderRequest.asHtml(DefaultVelocityTemplatingEngine.java:113) at com.atlassian.jira.web.component.AbstractWebComponent.asHtml(AbstractWebComponent.java:44) at com.atlassian.jira.web.component.IssueTableWebComponent$1.write(IssueTableWebComponent.java:160) at com.atlassian.jira.web.component.IssueTableWebComponent.asHtml(IssueTableWebComponent.java:97) at com.atlassian.jira.web.component.IssueTableWebComponent.getHtml(IssueTableWebComponent.java:70) at com.atlassian.jira.web.component.IssueTableWebComponent.getHtml(IssueTableWebComponent.java:54) at com.atlassian.jira.plugin.issuenav.service.issuetable.ListViewIssueTableCreator.getTable(ListViewIssueTableCreator.java:60) at com.atlassian.jira.plugin.issuenav.service.issuetable.AbstractIssueTableCreator.create(AbstractIssueTableCreator.java:192) at com.atlassian.jira.plugin.issuenav.service.issuetable.DefaultIssueTableService.createIssueTableFromCreator(DefaultIssueTableService.java:170) at com.atlassian.jira.plugin.issuenav.service.issuetable.DefaultIssueTableService.getIssueTableFromIssueIds(DefaultIssueTableService.java:146) at com.atlassian.jira.plugin.issuenav.service.DefaultStableSearchService.getIssueTableFromIssueIds(DefaultStableSearchService.java:31) at com.atlassian.jira.plugin.issuenav.rest.IssueTableResource.getIssueTableHtml(IssueTableResource.java:137) at sun.reflect.GeneratedMethodAccessor2146.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:154) at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:829) at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:68) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:70) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:58) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilterInternal(RestServletUtilsUpdaterFilter.java:22) at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilter(RestServletUtilsUpdaterFilter.java:34) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.servicedesk.internal.web.RedirectExternalCustomerToPortalFilter.doFilter(RedirectExternalCustomerToPortalFilter.scala:18) at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.mywork.client.filter.ServingRequestsFilter.doFilter(ServingRequestsFilter.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFixupFilter.doFilter(PrettyUrlsSiteMeshFixupFilter.java:36) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.prettyurls.filter.PrettyUrlsDispatcherFilter.doFilter(PrettyUrlsDispatcherFilter.java:60) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter.doFilter(PrettyUrlsSiteMeshFilter.java:92) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.prettyurls.filter.PrettyUrlsMatcherFilter.doFilter(PrettyUrlsMatcherFilter.java:56) at
thanks again for the help
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Here is the error from the log:
2018-09-14 13:03:16,432 http-bio-443-exec-10510 ERROR op00arig 783x1217515x1 m2xu33 172.23.20.128 /rest/issueNav/1/issueTable/stable [velocity] Exception in macro #issues at templates/jira/issue/table/issuetable-issue.vm[line 6, column 5]
2018-09-14 13:03:16,432 http-bio-443-exec-10510 ERROR op00arig 783x1217515x1 m2xu33 172.23.20.128 /rest/issueNav/1/issueTable/stable [c.atlassian.velocity.DefaultVelocityManager] MethodInvocationException occurred getting message body from Velocity: Assertion failed:
assert daysBetween > 0 && (daysBetween + 2) % 7 == 0
| | |
-2 | false
false
Assertion failed:
assert daysBetween > 0 && (daysBetween + 2) % 7 == 0
| | |
-2 | false
false
at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:402)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:650)
at Script172.run(Script172.groovy:82)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:352)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:153)
at javax.script.AbstractScriptEngine.eval(Unknown Source)
at javax.script.ScriptEngine$eval.call(Unknown Source)
at com.onresolve.scriptrunner.runner.ScriptRunnerImpl.runScriptAndGetContext(ScriptRunnerImpl.groovy:156)
at com.onresolve.scriptrunner.runner.ScriptRunner$runScriptAndGetContext$6.callCurrent(Unknown Source)
at com.onresolve.scriptrunner.runner.ScriptRunnerImpl.runStringAsScript(ScriptRunnerImpl.groovy:144)
at com.onresolve.scriptrunner.runner.ScriptRunner$runStringAsScript$4.call(Unknown Source)
at com.onresolve.scriptrunner.customfield.GroovyCustomField.getValueFromIssue(GroovyCustomField.groovy:222)
at com.atlassian.jira.issue.fields.CustomFieldImpl.getValue(CustomFieldImpl.java:388)
at com.atlassian.jira.issue.DocumentIssueImpl.getCustomFieldValue(DocumentIssueImpl.java:326)
at com.atlassian.jira.issue.fields.CustomFieldImpl.getRendererCustomFieldValue(CustomFieldImpl.java:875)
at com.atlassian.jira.issue.fields.CustomFieldImpl.getColumnViewHtml(CustomFieldImpl.java:870)
at com.atlassian.jira.issue.fields.layout.column.ColumnLayoutItemImpl.getHtml(ColumnLayoutItemImpl.java:106)
... 2 filtered
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:385)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:374)
at com.atlassian.velocity.htmlsafe.introspection.AnnotationBoxingMethod.invoke(AnnotationBoxingMethod.java:26)
at com.atlassian.velocity.htmlsafe.introspection.UnboxingMethod.invoke(UnboxingMethod.java:30)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:262)
at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:507)
at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71)
at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at org.apache.velocity.runtime.directive.Foreach.performIteration(Foreach.java:393)
at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:316)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:212)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:247)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
at org.apache.velocity.Template.merge(Template.java:328)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Arige,
Can you try replacing this line:
assert daysBetween > 0 && (daysBetween + 2) % 7 == 0
with this:
assert startDate && endDate && daysBetween > 0 && (daysBetween + 2) % 7 == 0
and let me know what the error message says then?
J
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
still get error
An error occurred whilst rendering this message. Please contact the administrators, and inform them of this bug. Details: ------- org.apache.velocity.exception.MethodInvocationException: Invocation of method 'getHtml' in class com.atlassian.jira.issue.fields.layout.column.ColumnLayoutItemImpl threw exception Assertion failed: assert startDate && endDate && daysBetween > 0 && (daysBetween + 2) % 7 == 0 | | | | | | | | | | | -2 | false | | | false false | | 2017-12-05 22:23:00.0 | true 2017-12-13 11:56:16.0 at templates/jira/issue/table/macros.vm[line 117, column 34] at org.apache.velocity.runtime.parser.node.ASTMethod.handleInvocationException(ASTMethod.java:351) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:284) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:262) at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:507) at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71) at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.directive.Foreach.performIteration(Foreach.java:393) at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:316) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:212) at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:247) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.apache.velocity.Template.merge(Template.java:328) at org.apache.velocity.Template.merge(Template.java:235) at org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:381) at com.atlassian.velocity.DefaultVelocityManager.writeEncodedBodyImpl(DefaultVelocityManager.java:117) at com.atlassian.velocity.DefaultVelocityManager.writeEncodedBody(DefaultVelocityManager.java:97) at com.atlassian.jira.template.velocity.DefaultVelocityTemplatingEngine$DefaultRenderRequest.toWriterImpl(DefaultVelocityTemplatingEngine.java:122) at com.atlassian.jira.template.velocity.DefaultVelocityTemplatingEngine$DefaultRenderRequest.asHtml(DefaultVelocityTemplatingEngine.java:113) at com.atlassian.jira.web.component.AbstractWebComponent.asHtml(AbstractWebComponent.java:44) at com.atlassian.jira.web.component.IssueTableWebComponent$1.write(IssueTableWebComponent.java:160) at com.atlassian.jira.web.component.IssueTableWebComponent.asHtml(IssueTableWebComponent.java:97) at com.atlassian.jira.web.component.IssueTableWebComponent.getHtml(IssueTableWebComponent.java:70) at com.atlassian.jira.web.component.IssueTableWebComponent.getHtml(IssueTableWebComponent.java:54) at com.atlassian.jira.plugin.issuenav.service.issuetable.ListViewIssueTableCreator.getTable(ListViewIssueTableCreator.java:60) at com.atlassian.jira.plugin.issuenav.service.issuetable.AbstractIssueTableCreator.create(AbstractIssueTableCreator.java:192) at com.atlassian.jira.plugin.issuenav.service.issuetable.DefaultIssueTableService.createIssueTableFromCreator(DefaultIssueTableService.java:170) at com.atlassian.jira.plugin.issuenav.service.issuetable.DefaultIssueTableService.getIssueTableFromIssueIds(DefaultIssueTableService.java:146) at com.atlassian.jira.plugin.issuenav.service.DefaultStableSearchService.getIssueTableFromIssueIds(DefaultStableSearchService.java:31) at com.atlassian.jira.plugin.issuenav.rest.IssueTableResource.getIssueTableHtml(IssueTableResource.java:137) at sun.reflect.GeneratedMethodAccessor2146.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:154) at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:829) at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:68) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:70) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:58) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilterInternal(RestServletUtilsUpdaterFilter.java:22) at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilter(RestServletUtilsUpdaterFilter.java:34) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.servicedesk.internal.web.RedirectExternalCustomerToPortalFilter.doFilter(RedirectExternalCustomerToPortalFilter.scala:18) at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.mywork.client.filter.ServingRequestsFilter.doFilter(ServingRequestsFilter.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFixupFilter.doFilter(PrettyUrlsSiteMeshFixupFilter.java:36) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.prettyurls.filter.PrettyUrlsDispatcherFilter.doFilter(PrettyUrlsDispatcherFilter.java:60) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter.doFilter(PrettyUrlsSiteMeshFilter.java:92) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.prettyurls.filter.PrettyUrlsMatcherFilter.doFilter(PrettyUrlsMatcherFilter.java:56) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.labs.botkiller.BotKillerFilter.doFilter(BotKillerFilter.java:36) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:70) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:58) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at com.atlassian.jira.web.filters.accesslog.AccessLogFilter.executeRequest(AccessLogFilter.java:92) at com.atlassian.jira.web.filters.accesslog.AccessLogFilter.doFilter(AccessLogFilter.java:78) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at com.atlassian.jira.security.xsrf.XsrfTokenAdditionRequestFilter.doFilter(XsrfTokenAdditionRequestFilter.java:49) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at com.atlassian.jira.web.filters.pagebuilder.PageBuilderFilter.doFilter(PageBuilderFilter.java:81) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at com.atlassian.jira.web.filters.CommittedResponseHtmlErrorRecoveryFilter.doFilter(CommittedResponseHtmlErrorRecoveryFilter.java:55) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:70) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:58) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at com.atlassian.jira.web.filters.mau.AbstractMauRequestTaggingFilter.doFilter(AbstractMauRequestTaggingFilter.java:42) at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at com.atlassian.jira.web.filters.MauEventFilter.doFilter(MauEventFilter.java:52) at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:242) at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:70) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:103) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:148) at com.atlassian.jira.web.filters.JiraLoginFilter.doFilter(JiraLoginFilter.java:77) at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:79) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58) at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:70) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:58) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at com.atlassian.johnson.filters.AbstractJohnsonFilter.doFilter(AbstractJohnsonFilter.java:59) at com.atlassian.jira.web.filters.johnson.JiraJohnson503Filter.doFilter(JiraJohnson503Filter.java:24) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) aorg.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270) ... 254 more
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
and this is from my log:
2018-09-14 13:50:22,831 http-bio-443-exec-10614 ERROR op00arig 830x1220702x1 1d84hgq 172.23.20.128 /rest/issueNav/1/issueTable/stable [velocity] Exception in macro #issues at templates/jira/issue/table/issuetable-issue.vm[line 6, column 5]
2018-09-14 13:50:22,831 http-bio-443-exec-10614 ERROR op00arig 830x1220702x1 1d84hgq 172.23.20.128 /rest/issueNav/1/issueTable/stable [c.atlassian.velocity.DefaultVelocityManager] MethodInvocationException occurred getting message body from Velocity: Assertion failed:
assert startDate && endDate && daysBetween > 0 && (daysBetween + 2) % 7 == 0
| | | | | | |
| | | | -2 | false
| | | false false
| | 2017-12-05 22:23:00.0
| true
2017-12-13 11:56:16.0
Assertion failed:
assert startDate && endDate && daysBetween > 0 && (daysBetween + 2) % 7 == 0
| | | | | | |
| | | | -2 | false
| | | false false
| | 2017-12-05 22:23:00.0
| true
2017-12-13 11:56:16.0
at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:402)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:650)
at Script274.run(Script274.groovy:82)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:352)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:153)
at javax.script.AbstractScriptEngine.eval(Unknown Source)
at javax.script.ScriptEngine$eval.call(Unknown Source)
at com.onresolve.scriptrunner.runner.ScriptRunnerImpl.runScriptAndGetContext(ScriptRunnerImpl.groovy:156)
at com.onresolve.scriptrunner.runner.ScriptRunner$runScriptAndGetContext$6.callCurrent(Unknown Source)
at com.onresolve.scriptrunner.runner.ScriptRunnerImpl.runStringAsScript(ScriptRunnerImpl.groovy:144)
at com.onresolve.scriptrunner.runner.ScriptRunner$runStringAsScript$4.call(Unknown Source)
at com.onresolve.scriptrunner.customfield.GroovyCustomField.getValueFromIssue(GroovyCustomField.groovy:222)
at com.atlassian.jira.issue.fields.CustomFieldImpl.getValue(CustomFieldImpl.java:388)
at com.atlassian.jira.issue.DocumentIssueImpl.getCustomFieldValue(DocumentIssueImpl.java:326)
at com.atlassian.jira.issue.fields.CustomFieldImpl.getRendererCustomFieldValue(CustomFieldImpl.java:875)
at com.atlassian.jira.issue.fields.CustomFieldImpl.getColumnViewHtml(CustomFieldImpl.java:870)
at com.atlassian.jira.issue.fields.layout.column.ColumnLayoutItemImpl.getHtml(ColumnLayoutItemImpl.java:106)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Arige,
It wasn't meant to fix the error, I just wanted to get more visibility on the data to try and diagnose the problem.
Could you try replacing the assertion with this now?
assert start && end && sundayMidnightBeforeStart && fridayMidnightAfterEnd && daysBetween > 0 && (daysBetween + 2) % 7 == 0
J
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
that s what i get now:
An error occurred whilst rendering this message. Please contact the administrators, and inform them of this bug. Details: ------- org.apache.velocity.exception.MethodInvocationException: Invocation of method 'getHtml' in class com.atlassian.jira.issue.fields.layout.column.ColumnLayoutItemImpl threw exception Assertion failed: assert start && end && sundayMidnightBeforeStart && fridayMidnightAfterEnd && daysBetween > 0 && (daysBetween + 2) % 7 == 0 | | | | | | | | | | | | | | | 2017-12-10T00:00 | 2017-12-08T00:00 | -2 | false | | | true true false false | | 2017-12-05T22:23 | true 2017-12-13T11:56:16 at templates/jira/issue/table/macros.vm[line 117, column 34] at org.apache.velocity.runtime.parser.node.ASTMethod.handleInvocationException(ASTMethod.java:351) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:284) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:262) at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:507) at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71) at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.directive.Foreach.performIteration(Foreach.java:393) at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:316) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:212) at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:247) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87) at
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
from my log:
2018-09-14 14:03:53,712 http-bio-443-exec-10633 ERROR op00arig 843x1222232x1 198l6nd 172.23.20.128 /rest/issueNav/1/issueTable/stable [velocity] Exception in macro #issues at templates/jira/issue/table/issuetable-issue.vm[line 6, column 5]
2018-09-14 14:03:53,712 http-bio-443-exec-10633 ERROR op00arig 843x1222232x1 198l6nd 172.23.20.128 /rest/issueNav/1/issueTable/stable [c.atlassian.velocity.DefaultVelocityManager] MethodInvocationException occurred getting message body from Velocity: Assertion failed:
assert start && end && sundayMidnightBeforeStart && fridayMidnightAfterEnd && daysBetween > 0 && (daysBetween + 2) % 7 == 0
| | | | | | | | | | |
| | | | 2017-12-10T00:00 | 2017-12-08T00:00 | -2 | false
| | | true true false false
| | 2017-12-05T22:23
| true
2017-12-13T11:56:16
Assertion failed:
assert start && end && sundayMidnightBeforeStart && fridayMidnightAfterEnd && daysBetween > 0 && (daysBetween + 2) % 7 == 0
| | | | | | | | | | |
| | | | 2017-12-10T00:00 | 2017-12-08T00:00 | -2 | false
| | | true true false false
| | 2017-12-05T22:23
| true
2017-12-13T11:56:16
at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:402)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:650)
at Script340.run(Script340.groovy:82)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:352)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:153)
at javax.script.AbstractScriptEngine.eval(Unknown Source)
at javax.script.ScriptEngine$eval.call(Unknown Source)
at com.onresolve.scriptrunner.runner.ScriptRunnerImpl.runScriptAndGetContext(ScriptRunnerImpl.groovy:156)
at com.onresolve.scriptrunner.runner.ScriptRunner$runScriptAndGetContext$6.callCurrent(Unknown Source)
at com.onresolve.scriptrunner.runner.ScriptRunnerImpl.runStringAsScript(ScriptRunnerImpl.groovy:144)
at com.onresolve.scriptrunner.runner.ScriptRunner$runStringAsScript$4.call(Unknown Source)
at com.onresolve.scriptrunner.customfield.GroovyCustomField.getValueFromIssue(GroovyCustomField.groovy:222)
at com.atlassian.jira.issue.fields.CustomFieldImpl.getValue(CustomFieldImpl.java:388)
at com.atlassian.jira.issue.DocumentIssueImpl.getCustomFieldValue(DocumentIssueImpl.java:326)
at com.atlassian.jira.issue.fields.CustomFieldImpl.getRendererCustomFieldValue(CustomFieldImpl.java:875)
at com.atlassian.jira.issue.fields.CustomFieldImpl.getColumnViewHtml(CustomFieldImpl.java:870)
at com.atlassian.jira.issue.fields.layout.column.ColumnLayoutItemImpl.getHtml(ColumnLayoutItemImpl.java:106)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Arige,
Thanks, I think I see the problem now. It seems like the issue that's causing the error has a 'Start Date' that is later than its 'End Date'. I can try and revise the script to skip over such cases but you might also want to check how the issue ended up having those field values.
J
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi
you are right!!!
i find two issues and fix that problem.
now i should change the script to which one? because i change it many time so you couid
diagnose the problem...
thankssss!!!!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Arige,
You can change the assertion back to what it was originally, i.e.
assert daysBetween > 0 && (daysBetween + 2) % 7 == 0
And add an early return condition if the two dates are 'the wrong way around':
if (startDate > endDate) return -1
(You should put this latter line immediately after the conditions that check if startDate and endDate are null.)
J
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
NOW i have this error
2018-09-14 14:47:05,584 http-bio-443-exec-10706 ERROR op00arig 887x1225549x2 47hvzc 172.23.20.128 /rest/issueNav/1/issueTable [c.o.scriptrunner.customfield.GroovyCustomField] *************************************************************************************
2018-09-14 14:47:05,584 http-bio-443-exec-10706 ERROR op00arig 887x1225549x2 47hvzc 172.23.20.128 /rest/issueNav/1/issueTable [c.o.scriptrunner.customfield.GroovyCustomField] Script field failed on issue: SDDOC-149, field: ׳–׳ ׳ ׳”׳©׳‘׳×׳” ׳‘׳“׳§׳•׳×
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script634.groovy: 8: unexpected token: groovy @ line 8, column 23.
import java.utiimport groovy.transform.Field
^
1 error
2018-09-14 14:47:05,584 http-bio-443-exec-10706 ERROR op00arig 887x1225549x2 47hvzc 172.23.20.128 /rest/issueNav/1/issueTable [c.o.scriptrunner.customfield.GroovyCustomField] *************************************************************************************
2018-09-14 14:47:05,584 http-bio-443-exec-10706 ERROR op00arig 887x1225549x2 47hvzc 172.23.20.128 /rest/issueNav/1/issueTable [c.o.scriptrunner.customfield.GroovyCustomField] Script field failed on issue: SDDOC-664, field: ׳–׳ ׳ ׳”׳©׳‘׳×׳” ׳‘׳“׳§׳•׳×
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script635.groovy: 8: unexpected token: groovy @ line 8, column 23.
import java.utiimport groovy.transform.Field
^
1 error
2018-09-14 14:47:05,599 http-bio-443-exec-10706 ERROR op00arig 887x1225549x2 47hvzc 172.23.20.128 /rest/issueNav/1/issueTable [c.o.scriptrunner.customfield.GroovyCustomField] *************************************************************************************
2018-09-14 14:47:05,599 http-bio-443-exec-10706 ERROR op00arig 887x1225549x2 47hvzc 172.23.20.128 /rest/issueNav/1/issueTable [c.o.scriptrunner.customfield.GroovyCustomField] Script field failed on issue: SDDOC-217, field: ׳–׳ ׳ ׳”׳©׳‘׳×׳” ׳‘׳“׳§׳•׳×
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script636.groovy: 8: unexpected token: groovy @ line 8, column 23.
import java.utiimport groovy.transform.Field
^
1 error
2018-09-14 14:47:05,599 http-bio-443-exec-10706 ERROR op00arig 887x1225549x2 47hvzc 172.23.20.128 /rest/issueNav/1/issueTable [c.o.scriptrunner.customfield.GroovyCustomField] *************************************************************************************
2018-09-14 14:47:05,599 http-bio-443-exec-10706 ERROR op00arig 887x1225549x2 47hvzc 172.23.20.128 /rest/issueNav/1/issueTable [c.o.scriptrunner.customfield.GroovyCustomField] Script field failed on issue: SDDOC-195, field: ׳–׳ ׳ ׳”׳©׳‘׳×׳” ׳‘׳“׳§׳•׳×
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script637.groovy: 8: unexpected token: groovy @ line 8, column 23.
import java.utiimport groovy.transform.Field
^
1 error
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Arige,
It looks like you've deleted a bit of your imports section somehow. Just put that section back to the way it was before and it should be fine.
J
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi jAKE
you are always rigt :-)
it was my mistake.... i copied again the script and it worked!!! in addition fieids where the 'Start Date' is bigger than the 'End Date' it gives me the result minus 1.
thanks again for all that
you are awesome!!! and really help me
sorry that it took a long time that is because i 'm not so familiar with scripts :-(
thanks again
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Arige,
No worries, you're very welcome! Please consider accepting my original answer if you wish.
Thanks,
J
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.