{"action":"created","issue":{"url":"https://api.github.com/repos/spring-io/sagan/issues/502","labels_url":"https://api.github.com/repos/spring-io/sagan/issues/502/labels{/name}","comments_url":"https://api.github.com/repos/spring-io/sagan/issues/502/comments","events_url":"https://api.github.com/repos/spring-io/sagan/issues/502/events","html_url":"https://github.com/spring-io/sagan/issues/502","id":57483055,"number":502,"title":"Exception when viewing a guide locally","user":{"login":"royclarkson","id":20805,"avatar_url":"https://avatars.githubusercontent.com/u/20805?v=3","gravatar_id":"","url":"https://api.github.com/users/royclarkson","html_url":"https://github.com/royclarkson","followers_url":"https://api.github.com/users/royclarkson/followers","following_url":"https://api.github.com/users/royclarkson/following{/other_user}","gists_url":"https://api.github.com/users/royclarkson/gists{/gist_id}","starred_url":"https://api.github.com/users/royclarkson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/royclarkson/subscriptions","organizations_url":"https://api.github.com/users/royclarkson/orgs","repos_url":"https://api.github.com/users/royclarkson/repos","events_url":"https://api.github.com/users/royclarkson/events{/privacy}","received_events_url":"https://api.github.com/users/royclarkson/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/spring-io/sagan/labels/in%20progress","name":"in progress","color":"ededed"}],"state":"open","locked":false,"assignee":{"login":"bclozel","id":103264,"avatar_url":"https://avatars.githubusercontent.com/u/103264?v=3","gravatar_id":"","url":"https://api.github.com/users/bclozel","html_url":"https://github.com/bclozel","followers_url":"https://api.github.com/users/bclozel/followers","following_url":"https://api.github.com/users/bclozel/following{/other_user}","gists_url":"https://api.github.com/users/bclozel/gists{/gist_id}","starred_url":"https://api.github.com/users/bclozel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bclozel/subscriptions","organizations_url":"https://api.github.com/users/bclozel/orgs","repos_url":"https://api.github.com/users/bclozel/repos","events_url":"https://api.github.com/users/bclozel/events{/privacy}","received_events_url":"https://api.github.com/users/bclozel/received_events","type":"User","site_admin":false},"milestone":null,"comments":4,"created_at":"2015-02-12T16:27:50Z","updated_at":"2015-02-19T01:38:39Z","closed_at":null,"body":"I pulled a fresh copy of Sagan and ran './gradlew :sagan-site:bootRun'. When I attempt to view a guide it throws the following exception. Everything else works as expected. I followed the instructions for setting up the environment. I tried on a different machine, and it worked as expected, rendering the guide. Initially I was assuming it was an issue with my computer, but then @habuma experienced the exact same exception on his computer too.\r\n```\r\njava.lang.IllegalArgumentException: String input must not be null\r\n\tat org.jsoup.helper.Validate.notNull(Validate.java:26)\r\n\tat org.jsoup.parser.TreeBuilder.initialiseParse(TreeBuilder.java:24)\r\n\tat org.jsoup.parser.TreeBuilder.parse(TreeBuilder.java:40)\r\n\tat org.jsoup.parser.HtmlTreeBuilder.parse(HtmlTreeBuilder.java:55)\r\n\tat org.jsoup.parser.Parser.parse(Parser.java:90)\r\n\tat org.jsoup.Jsoup.parse(Jsoup.java:58)\r\n\tat sagan.guides.support.GuideOrganization.getAsciidocGuide(GuideOrganization.java:123)\r\n\tat sagan.guides.support.AsciidoctorUtils.getDocument(AsciidoctorUtils.java:36)\r\n\tat sagan.guides.support.GettingStartedGuides.populate(GettingStartedGuides.java:77)\r\n\tat sagan.guides.support.GettingStartedGuides.populate(GettingStartedGuides.java:24)\r\n\tat sagan.guides.AbstractDocument.getContent(AbstractDocument.java:27)\r\n\tat sagan.guides.GettingStartedGuide.getContent(GettingStartedGuide.java:3)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:483)\r\n\tat org.springframework.expression.spel.support.ReflectivePropertyAccessor$OptimalPropertyAccessor.read(ReflectivePropertyAccessor.java:619)\r\n\tat org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:202)\r\n\tat org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:85)\r\n\tat org.springframework.expression.spel.ast.PropertyOrFieldReference.access$000(PropertyOrFerence.java:43)\r\n\tat org.springframework.expression.spel.ast.PropertyOrFieldReference$AccessorLValue.getValue(PropertyOrFieldReference.java:341)\r\n\tat org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:84)\r\n\tat org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:101)\r\n\tat org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:100)\r\n\tat org.thymeleaf.spring4.expression.SpelVariableExpressionEvaluator.evaluate(SpelVariableExpressionEvaluator.java:139)\r\n\tat org.thymeleaf.standard.expression.VariableExpression.executeVariable(VariableExpression.java:149)\r\n\tat org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:59)\r\n\tat org.thymeleaf.standard.expression.Expression.execute(Expression.java:103)\r\n\tat org.thymeleaf.standard.expression.Expression.execute(Expression.java:133)\r\n\tat org.thymeleaf.standard.processor.attr.AbstractStandardUnescapedTextChildModifierAttrProcessor.getText(AbstractStandardUnescapedTextChildModifierAttrProcessor.java:69)\r\n\tat org.thymeleaf.processor.attr.AbstractUnescapedTextChildModifierAttrProcessor.getModifiedChildren(AbstractUnescapedTextChildModifierAttrProcessor.java:60)\r\n\tat org.thymeleaf.processor.attr.AbstractChildrenModifierAttrProcessor.processAttribute(AbstractChildrenModifierAttrProcessor.java:58)\r\n\tat org.thymeleaf.processor.attr.AbstractAttrProcessor.doProcess(AbstractAttrProcessor.java:87)\r\n\tat org.thymeleaf.processor.AbstractProcessor.process(AbstractProcessor.java:212)\r\n\tat org.thymeleaf.dom.Node.applyNextProcessor(Node.java:1016)\r\n\tat org.thymeleaf.dom.Node.processNode(Node.java:971)\r\n\tat org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:672)\r\n\tat org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:655)\r\n\tat org.thymeleaf.dom.Node.processNode(Node.java:990)\r\n\tat org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:672)\r\n\tat org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:655)\r\n\tat org.thydom.Node.processNode(Node.java:990)\r\n\tat org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:672)\r\n\tat org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:655)\r\n\tat org.thymeleaf.dom.Node.processNode(Node.java:990)\r\n\tat org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:672)\r\n\tat org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:655)\r\n\tat org.thymeleaf.dom.Node.processNode(Node.java:990)\r\n\tat org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:672)\r\n\tat org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:655)\r\n\tat org.thymeleaf.dom.Node.processNode(Node.java:990)\r\n\tat org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:672)\r\n\tat org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:655)\r\n\tat org.thymeleaf.dom.Node.processNode(Node.java:990)\r\n\tat org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:672)\r\n\tat org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:655)\r\n\tat org.thymeleaf.dom.Node.processNode(Node.java:990)\r\n\tat org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:672)\r\n\tat org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:655)\r\n\tat org.thymeleaf.dom.Node.processNode(Node.java:990)\r\n\tat org.thymeleaf.dom.Document.process(Document.java:93)\r\n\tat org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1155)\r\n\tat org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060)\r\n\tat org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011)\r\n\tat org.thymeleaf.spring4.view.ThymeleafView.renderFragment(ThymeleafView.java:335)\r\n\tat org.thymeleaf.spring4.view.ThymeleafView.render(ThymeleafView.java:190)\r\n\tat org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1221)\r\n\tat org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1005)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:952)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doSDispatcherServlet.java:870)\r\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)\r\n\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:620)\r\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:727)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\r\n\tat org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\r\n\tat org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration$ApplicationContextHeaderFilter.doFilterInternal(EndpointWebMvcAutoConfiguration.java:280)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\r\n\tat org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:186)\r\n\tat org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\r\n\tat org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.r(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\r\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\r\n\tat org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)\r\n\tat org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)\r\n\tat org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)\r\n\tat org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:389)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\r\n\tat org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration$MetricsFilter.doFilterInternal(MetricFilterAutoConfiguration.java:90)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\r\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)\r\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)\r\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)\r\n\tat org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)\r\n\tat org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)\r\n\tat org.apache.c.core.StandardHostValve.invoke(StandardHostValve.java:170)\r\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)\r\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)\r\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)\r\n\tat org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)\r\n\tat org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)\r\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736)\r\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1695)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\r\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\r\n\tat java.lang.Thread.run(Thread.java:745)\r\n```"},"comment":{"url":"https://api.github.com/repos/spring-io/sagan/issues/comments/74985301","html_url":"https://github.com/spring-io/sagan/issues/502#issuecomment-74985301","issue_url":"https://api.github.com/repos/spring-io/sagan/issues/502","id":74985301,"user":{"login":"gregturn","id":311040,"avatar_url":"https://avatars.githubusercontent.com/u/311040?v=3","gravatar_id":"","url":"https://api.github.com/users/gregturn","html_url":"https://github.com/gregturn","followers_url":"https://api.github.com/users/gregturn/followers","following_url":"https://api.github.com/users/gregturn/following{/other_user}","gists_url":"https://api.github.com/users/gregturn/gists{/gist_id}","starred_url":"https://api.github.com/users/gregturn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gregturn/subscriptions","organizations_url":"https://api.github.com/users/gregturn/orgs","repos_url":"https://api.github.com/users/gregturn/repos","events_url":"https://api.github.com/users/gregturn/events{/privacy}","received_events_url":"https://api.github.com/users/gregturn/received_events","type":"User","site_admin":false},"created_at":"2015-02-19T01:38:39Z","updated_at":"2015-02-19T01:38:39Z","body":"The entire gsg is downloaded as a zip ball and staged in a Java temp folder. From there, asciidoctor is told to process the readme. I guess I thought that with a multiple-file document, renderFile was the way to go. I didn't realise reading the file as a string would still work. Cool. "}}