Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

calculating time scripted field in minutes

arige hamdan August 1, 2018

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}

 

2 answers

1 accepted

1 vote
Answer accepted
Joanna Choules
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
August 2, 2018

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

0 votes
arige hamdan August 13, 2018

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))
}

Joanna Choules
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
August 13, 2018

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

arige hamdan August 30, 2018

Capture script error 30.8.JPGHI'

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

Joanna Choules
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
August 30, 2018

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

arige hamdan September 2, 2018

Capture script error 02.09..JPGHi

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

arige hamdan September 2, 2018

Capture script error details 02.09..JPG

arige hamdan September 2, 2018

Capture script  02.09..JPGtest result 2.9.JPGHi

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

Joanna Choules
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 12, 2018

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

arige hamdan September 12, 2018

Capture script error details 12.09..JPGHi

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

Joanna Choules
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 12, 2018

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

arige hamdan September 13, 2018

Capture script error details 13.09..JPGCapture script error details1 13.09..JPGHi

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

arige hamdan September 13, 2018

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

Joanna Choules
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 13, 2018

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

arige hamdan September 14, 2018

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 helpCapture script error details1 14.09..JPGCapture script error details  14.09..JPG

arige hamdan September 14, 2018

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)

Joanna Choules
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 14, 2018

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

arige hamdan September 14, 2018

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

arige hamdan September 14, 2018

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)

Joanna Choules
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 14, 2018

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

arige hamdan September 14, 2018

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 

arige hamdan September 14, 2018

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)

Joanna Choules
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 14, 2018

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

arige hamdan September 14, 2018

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!!!!

Joanna Choules
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 14, 2018

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

arige hamdan September 14, 2018

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

arige hamdan September 14, 2018

Capture 14.09 1444.JPG

Joanna Choules
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 14, 2018

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

arige hamdan September 14, 2018

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

Joanna Choules
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 14, 2018

Hi Arige,

No worries, you're very welcome! Please consider accepting my original answer if you wish.

Thanks,

J

arige hamdan September 14, 2018

Done :-)

 

thanks!

Suggest an answer

Log in or Sign up to answer