OSDir


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Mifos-developer] Wrong MySQL(The RuntimeException could not be mapped to a response, re-throwing to the HTTP container)


Hi Emmanuel -

One more quick note. I realized that I had already made that change as a
part of my MySQL-5.7 fixes. You are correct that the stretchy_reports query
will fail if ONLY_FULL_GROUP_BY is enabled (which it is by default in MySQL
5.7).

You can either disable that option in your MySQL 5.5 instance, or you can
update that row in the stretchy_reports table to address this issue.
Thanks,
Steve


On Sat, Jun 9, 2018 at 3:59 PM Steve Conrad <sconrad1@xxxxxxxxx> wrote:

> Hi Emmanuel -
>
> This query is one of the stretchy reports, which is found in the
> stretchy_report table. However, I am able to run the original query without
> errors on both MySQL 5.6 and 5.7. I would need to understand more about
> your environment to know why it is failing for you.
>
> If you would like to change the report SQL in your environment, you would
> do something like:
>
> update stretchy_report set report_sql=`<your updated sql>` where
> report_name='ClientSummary'
>
> On Sat, Jun 9, 2018 at 3:02 PM Emmanuel Njoku <einjoku@xxxxxxxxx> wrote:
>
>> Dear  Steve,
>>
>> I am having the same error on mysql 5.5. i download the latest code
>> using git clone https://github.com/openMF/incubator-fineract.git.
>> please what is the solution to this error message.
>>
>> select x.* from (SELECT x.* FROM m_client c, m_office o,
>> (SELECT a.loanCycle, a.activeLoans, b.lastLoanAmount, d.activeSavings,
>> d.totalSavings FROM
>>   (SELECT IFNULL(MAX(l.loan_counter),0) AS loanCycle, COUNT(l.id) AS
>> activeLoans FROM m_loan l
>>   WHERE l.loan_status_id=300 AND l.client_id=10) a,
>>   (SELECT count(l.id), IFNULL(l.principal_amount,0) AS 'lastLoanAmount'
>> FROM m_loan l WHERE l.client_id=10
>>   AND l.disbursedon_date = (SELECT IFNULL(MAX(disbursedon_date),NOW())
>> FROM
>> m_loan where client_id=10 and loan_status_id=300)) b,
>>  (SELECT COUNT(s.id) AS 'activeSavings',
>> IFNULL(SUM(s.account_balance_derived),0) AS 'totalSavings'
>>  FROM m_savings_account s WHERE s.status_enum=300 AND s.client_id=10) d
>> ) x
>> WHERE c.id=10 AND o.id = c.office_id AND o.hierarchy LIKE CONCAT('.',
>> '%'))
>> x
>>
>>
>> On Sat, Jun 9, 2018 at 5:30 PM, Steve Conrad <sconrad1@xxxxxxxxx> wrote:
>>
>> > Hi Emmanuel -
>> >
>> > We do have a project that allows us to work with MySQL 5.7 and fixes all
>> > of the group by clauses in Fineract. But that code has not been pushed
>> into
>> > any of the active branches as far as I know. I think we had identified a
>> > large testing task for this summer's GSoC to make sure we had covered
>> > everything.
>> >
>> > If you want to use MySQL 5.7, you can pull from my fork:
>> > https://github.com/conradsp/fineract/tree/mysql-5.7
>> > Otherwise, you'll have to use MySQL 5.6
>> >
>> > Thanks,
>> > Steve
>> >
>> >
>> > On Sat, Jun 9, 2018 at 11:07 AM, Emmanuel Njoku <einjoku@xxxxxxxxx>
>> wrote:
>> >
>> >> The solution is below query
>> >>
>> >> select x.* from (SELECT x.* FROM m_client c, m_office o,
>> >> (SELECT a.loanCycle, a.activeLoans, b.lastLoanAmount, d.activeSavings,
>> >> d.totalSavings FROM
>> >>   (SELECT IFNULL(MAX(l.loan_counter),0) AS loanCycle, COUNT(l.id) AS
>> >> activeLoans FROM m_loan l WHERE l.loan_status_id=300 AND
>> l.client_id=8) a,
>> >>   (SELECT count(l.id), IFNULL(l.principal_amount,0) AS
>> 'lastLoanAmount'
>> >> FROM m_loan l WHERE l.client_id=8
>> >>   AND l.disbursedon_date = (SELECT IFNULL(MAX(disbursedon_date),NOW())
>> >> FROM
>> >> m_loan where client_id=8 and loan_status_id=300) group by
>> >> l.principal_amount) b,
>> >>  (SELECT COUNT(s.id) AS 'activeSavings',
>> >> IFNULL(SUM(s.account_balance_derived),0) AS 'totalSavings'
>> >>  FROM m_savings_account s WHERE s.status_enum=300 AND s.client_id=8)
>> d) x
>> >> WHERE c.id=8 AND o.id = c.office_id AND o.hierarchy LIKE CONCAT('.',
>> >> '%'))
>> >> x;
>> >>
>> >> But i need the class where it was defined so that it can be update.
>> >>
>> >> Regards
>> >>
>> >> On Sat, Jun 9, 2018 at 4:54 PM, Emmanuel Njoku <einjoku@xxxxxxxxx>
>> wrote:
>> >>
>> >> > please assist on this request. I have identify the issue and
>> solution to
>> >> > it but i am seriously looking on the code "incubator-fineract" so
>> that i
>> >> > can update it. There is no "group by" on the Mysql query.
>> >> >
>> >> > Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
>> >> In
>> >> > aggregated query without GROUP BY, expression #2 of SELECT list
>> contains
>> >> > nonaggregated column 'mifostenant-default.l.principal_amount'; this
>> is
>> >> > incompatible with sql_mode=only_full_group_by
>> >> >
>> >> >
>> >> > /v1/runreports/ClientSummary","parameters":{"genericResultSe
>> >> t":["false"],"
>> >> > R_clientId":["10"]}}
>> >> > 197280 [http-bio-443-exec-1] ERROR o.s.b.context.web.ErrorPageFilter
>> -
>> >> > Forwarding to error page from request [/api/v1/runreports/ClientSumm
>> >> ary]
>> >> > due to exception [StatementCallback; bad SQL grammar [select x.* from
>> >> > (SELECT x.* FROM m_client c, m_office o,
>> >> > (
>> >> >        SELECT a.loanCycle, a.activeLoans, b.lastLoanAmount,
>> >> > d.activeSavings, d.totalSavings FROM
>> >> >   (SELECT IFNULL(MAX(l.loan_counter),0) AS loanCycle, COUNT(l.id) AS
>> >> > activeLoans FROM m_loan l WHERE l.loan_status_id=300 AND
>> >> l.client_id=10) a,
>> >> >   (SELECT count(l.id), IFNULL(l.principal_amount,0) AS
>> 'lastLoanAmount'
>> >> > FROM m_loan l WHERE l.client_id=10 AND l.disbursedon_date = (SELECT
>> >> > IFNULL(MAX(disbursedon_date),NOW()) FROM m_loan where client_id=10
>> and
>> >> > loan_status_id=300)) b,
>> >> >  (SELECT COUNT(s.id) AS 'activeSavings',
>> IFNULL(SUM(s.account_balance_d
>> >> erived),0)
>> >> > AS 'totalSavings' FROM m_savings_account s WHERE s.status_enum=300
>> AND
>> >> > s.client_id=10) d
>> >> > ) x
>> >> > WHERE c.id=10 AND o.id = c.office_id AND o.hierarchy LIKE
>> CONCAT('.',
>> >> > '%')) x]; nested exception is com.mysql.jdbc.exceptions.jdbc
>> >> 4.MySQLSyntaxErrorException:
>> >> > In aggregated query without GROUP BY, expression #2 of SELECT list
>> >> contains
>> >> > nonaggregated column 'mifostenant-default.l.principal_amount'; this
>> is
>> >> > incompatible with sql_mode=only_full_group_by]
>> >> > org.springframework.jdbc.BadSqlGrammarException: StatementCallback;
>> bad
>> >> > SQL grammar [select x.* from (SELECT x.* FROM m_client c, m_office o,
>> >> > (
>> >> >        SELECT a.loanCycle, a.activeLoans, b.lastLoanAmount,
>> >> > d.activeSavings, d.totalSavings FROM
>> >> >   (SELECT IFNULL(MAX(l.loan_counter),0) AS loanCycle, COUNT(l.id) AS
>> >> > activeLoans FROM m_loan l WHERE l.loan_status_id=300 AND
>> >> l.client_id=10) a,
>> >> >   (SELECT count(l.id), IFNULL(l.principal_amount,0) AS
>> 'lastLoanAmount'
>> >> > FROM m_loan l WHERE l.client_id=10 AND l.disbursedon_date = (SELECT
>> >> > IFNULL(MAX(disbursedon_date),NOW()) FROM m_loan where client_id=10
>> and
>> >> > loan_status_id=300)) b,
>> >> >  (SELECT COUNT(s.id) AS 'activeSavings',
>> IFNULL(SUM(s.account_balance_d
>> >> erived),0)
>> >> > AS 'totalSavings' FROM m_savings_account s WHERE s.status_enum=300
>> AND
>> >> > s.client_id=10) d
>> >> > ) x
>> >> > WHERE c.id=10 AND o.id = c.office_id AND o.hierarchy LIKE
>> CONCAT('.',
>> >> > '%')) x]; nested exception is com.mysql.jdbc.exceptions.jdbc
>> >> 4.MySQLSyntaxErrorException:
>> >> > In aggregated query without GROUP BY, expression #2 of SELECT list
>> >> contains
>> >> > nonaggregated column 'mifostenant-default.l.principal_amount'; this
>> is
>> >> > incompatible with sql_mode=only_full_group_by
>> >> >         at
>> org.springframework.jdbc.support.SQLExceptionSubclassTransla
>> >> tor
>> >> > .doTranslate(SQLExceptionSubclassTranslator.java:91)
>> >> > ~[spring-jdbc-4.0.7.RELEASE.jar:4.0.7.RELEASE]
>> >> >         at
>> org.springframework.jdbc.support.AbstractFallbackSQLExceptio
>> >> nTr
>> >> > anslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
>> >> > ~[spring-jdbc-4.0.7.RELEASE.jar:4.0.7.RELEASE]
>> >> >         at
>> org.springframework.jdbc.support.AbstractFallbackSQLExceptio
>> >> nTr
>> >> > anslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
>> >> > ~[spring-jdbc-4.0.7.RELEASE.jar:4.0.7.RELEASE]
>> >> >         at
>> org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTempl
>> >> ate.java:413)
>> >> > ~[spring-jdbc-4.0.7.RELEASE.jar:4.0.7.RELEASE]
>> >> >         at
>> org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplat
>> >> e.java:468)
>> >> > ~[spring-jdbc-4.0.7.RELEASE.jar:4.0.7.RELEASE]
>> >> >         at
>> org.springframework.jdbc.core.JdbcTemplate.queryForRowSet(Jd
>> >> bcTemplate.java:523)
>> >> > ~[spring-jdbc-4.0.7.RELEASE.jar:4.0.7.RELEASE]
>> >> >         at org.apache.fineract.infrastructure.dataqueries.service.
>> >> > GenericDataServiceImpl.fillGenericResultSet(GenericDataServi
>> >> ceImpl.java:59)
>> >> > ~[classes/:na]
>> >> >         at org.apache.fineract.infrastructure.dataqueries.service.
>> >> > ReadReportingServiceImpl.retrieveGenericResultset(
>> >> > ReadReportingServiceImpl.java:181) ~[classes/:na]
>> >> >         at org.apache.fineract.infrastructure.dataqueries.
>> >> > api.RunreportsApiResource.runReport(RunreportsApiResource.java:121)
>> >> > ~[classes/:na]
>> >> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)
>> >> > ~[na:1.8.0_171]
>> >> >         at sun.reflect.NativeMethodAccessorImpl.invoke(
>> >> > NativeMethodAccessorImpl.java:62) ~[na:1.8.0_171]
>> >> >         at sun.reflect.DelegatingMethodAccessorImpl.invoke(
>> >> > DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_171]
>> >> >         at java.lang.reflect.Method.invoke(Method.java:498)
>> >> > ~[na:1.8.0_171]
>> >> >         at
>> com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invo
>> >> ke(
>> >> > JavaMethodInvokerFactory.java:60) ~[jersey-server-1.17.jar:1.17]
>> >> >         at com.sun.jersey.server.impl.model.method.dispatch.
>> >> > AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(
>> >> > AbstractResourceMethodDispatchProvider.java:205)
>> >> > ~[jersey-server-1.17.jar:1.17]
>> >> >
>> >> >
>> >> >
>> >> > On Sat, Jun 9, 2018 at 3:25 PM, Ed Cable <edcable@xxxxxxxxx> wrote:
>> >> >
>> >> >> Emmanuel,
>> >> >>
>> >> >> Please start a new message thread if you have a different support
>> >> query.
>> >> >> You can do so my creating a new email with a relevant subject line
>> and
>> >> >> sending it to the respective mailing list.
>> >> >>
>> >> >> We need to keep each discussion thread relevant and on-topic. Thank
>> you
>> >> >> for using the mailing lists though!
>> >> >>
>> >> >> Cheers,
>> >> >>
>> >> >> Ed
>> >> >>
>> >> >> On Sat, Jun 9, 2018 at 3:00 AM Emmanuel Njoku <einjoku@xxxxxxxxx>
>> >> wrote:
>> >> >>
>> >> >>> who can assist me on this error message. I obtain this message
>> after
>> >> >>> creation of new Data table mapped to client*.*
>> >> >>>
>> >> >>>
>> >> >>> Jun 09, 2018 10:45:22 AM com.sun.jersey.spi.container.C
>> >> ontainerResponse
>> >> >>> mapMappableContainerException
>> >> >>> SEVERE: The RuntimeException could not be mapped to a response,
>> >> >>> re-throwing
>> >> >>> to the HTTP container
>> >> >>> java.lang.NullPointerException
>> >> >>> at
>> >> >>> org.apache.fineract.infrastructure.security.utils.SQLInjecti
>> >> >>> onValidator.validateSQLInput(SQLInjectionValidator.java:36)
>> >> >>> at
>> >> >>> org.apache.fineract.infrastructure.security.utils.ColumnVali
>> >> >>> dator.validateSqlInjection(ColumnValidator.java:95)
>> >> >>> at
>> >> >>> org.apache.fineract.infrastructure.dataqueries.service.ReadW
>> >> >>> riteNonCoreDataServiceImpl.retrieveDataTableGenericResultSet
>> >> >>> (ReadWriteNonCoreDataServiceImpl.java:1190)
>> >> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> >> >>> at
>> >> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
>> >> >>> ssorImpl.java:62)
>> >> >>> at
>> >> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
>> >> >>> thodAccessorImpl.java:43)
>> >> >>> at java.lang.reflect.Method.invoke(Method.java:498)
>> >> >>> at
>> >> >>> org.springframework.aop.support.AopUtils.invokeJoinpointUsin
>> >> >>> gReflection(AopUtils.java:317)
>> >> >>> at
>> >> >>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(
>> >> >>> JdkDynamicAopProxy.java:201)
>> >> >>> at
>> com.sun.proxy.$Proxy148.retrieveDataTableGenericResultSet(Unknown
>> >> >>> Source)
>> >> >>> at
>> >> >>> org.apache.fineract.infrastructure.dataqueries.api.
>> >> >>> DatatablesApiResource.getDatatable(DatatablesApiResource.java:174)
>> >> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> >> >>> at
>> >> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
>> >> >>> ssorImpl.java:62)
>> >> >>> at
>> >> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
>> >> >>> thodAccessorImpl.java:43)
>> >> >>> at java.lang.reflect.Method.invoke(Method.java:498)
>> >> >>> at
>> >> >>> com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invo
>> >> >>> ke(JavaMethodInvokerFactory.java:60)
>> >> >>> at
>> >> >>> com.sun.jersey.server.impl.model.method.dispatch.AbstractRes
>> >> >>> ourceMethodDispatchProvider$TypeOutInvoker._dispatch(Abstr
>> >> >>> actResourceMethodDispatchProvider.java:185)
>> >> >>> at
>> >> >>> com.sun.jersey.server.impl.model.method.dispatch.ResourceJav
>> >> >>> aMethodDispatcher.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.accep
>> >> >>> t(RightHandPathRule.java:147)
>> >> >>> at
>> >> >>> com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accep
>> >> >>> t(ResourceClassRule.java:108)
>> >> >>> at
>> >> >>> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accep
>> >> >>> t(RightHandPathRule.java:147)
>> >> >>> at
>> >> >>> com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule
>> >> >>> .accept(RootResourceClassesRule.java:84)
>> >> >>> at
>> >> >>> com.sun.jersey.server.impl.application.WebApplicationImpl._h
>> >> >>> andleRequest(WebApplicationImpl.java:1511)
>> >> >>> at
>> >> >>> com.sun.jersey.server.impl.application.WebApplicationImpl._h
>> >> >>> andleRequest(WebApplicationImpl.java:1442)
>> >> >>> at
>> >> >>> com.sun.jersey.server.impl.application.WebApplicationImpl.ha
>> >> >>> ndleRequest(WebApplicationImpl.java:1391)
>> >> >>> at
>> >> >>> com.sun.jersey.server.impl.application.WebApplicationImpl.ha
>> >> >>> ndleRequest(WebApplicationImpl.java:1381)
>> >> >>> at
>> >> >>> com.sun.jersey.spi.container.servlet.WebComponent.service(We
>> >> >>> bComponent.java:416)
>> >> >>> at
>> >> >>> com.sun.jersey.spi.container.servlet.ServletContainer.servic
>> >> >>> e(ServletContainer.java:538)
>> >> >>> at
>> >> >>> com.sun.jersey.spi.container.servlet.ServletContainer.servic
>> >>
>> >> >>> e(ServletContainer.java:716)
>> >> >>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
>> >> >>> at
>> >> >>> org.apache.catalina.core.ApplicationFilterChain.internalDoFi
>> >> >>> lter(ApplicationFilterChain.java:303)
>> >> >>> at
>> >> >>> org.apache.catalina.core.ApplicationFilterChain.doFilter(App
>> >> >>> licationFilterChain.java:208)
>> >> >>> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilte
>> >> >>> r.java:52)
>> >> >>> at
>> >> >>> org.apache.catalina.core.ApplicationFilterChain.internalDoFi
>> >> >>> lter(ApplicationFilterChain.java:241)
>> >> >>> at
>> >> >>> org.apache.catalina.core.ApplicationFilterChain.doFilter(App
>> >> >>> licationFilterChain.java:208)
>> >> >>> at
>> >> >>> org.springframework.security.web.access.intercept.FilterSecu
>> >> >>> rityInterceptor.invoke(FilterSecurityInterceptor.java:108)
>> >> >>> at
>> >> >>> org.springframework.security.web.access.intercept.FilterSecu
>> >> >>> rityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
>> >> >>> at
>> >> >>> org.apache.catalina.core.ApplicationFilterChain.internalDoFi
>> >> >>> lter(ApplicationFilterChain.java:241)
>> >> >>> at
>> >> >>> org.apache.catalina.core.ApplicationFilterChain.doFilter(App
>> >> >>> licationFilterChain.java:208)
>> >> >>> at
>> >> >>> org.springframework.security.web.FilterChainProxy$VirtualFil
>> >> >>> terChain.doFilter(FilterChainProxy.java:330)
>> >> >>> at
>> >> >>> org.springframework.security.web.access.intercept.FilterSecu
>> >> >>> rityInterceptor.invoke(FilterSecurityInterceptor.java:118)
>> >> >>> at
>> >> >>> org.springframework.security.web.access.intercept.FilterSecu
>> >> >>> rityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
>> >> >>> at
>> >> >>> org.springframework.security.web.FilterChainProxy$VirtualFil
>> >> >>> terChain.doFilter(FilterChainProxy.java:342)
>> >> >>> at
>> >> >>> org.springframework.security.web.access.ExceptionTranslation
>> >> >>> Filter.doFilter(ExceptionTranslationFilter.java:113)
>> >> >>> at
>> >> >>> org.springframework.security.web.FilterChainProxy$VirtualFil
>> >> >>> terChain.doFilter(FilterChainProxy.java:342)
>> >> >>> at
>> >> >>> org.springframework.security.web.authentication.AnonymousAut
>> >> >>> henticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
>> >> >>> at
>> >> >>> org.springframework.security.web.FilterChainProxy$VirtualFil
>> >> >>> terChain.doFilter(FilterChainProxy.java:342)
>> >> >>> at
>> >> >>> org.springframework.security.web.servletapi.SecurityContextH
>> >> >>> olderAwareRequestFilter.doFilter(SecurityContextHolder
>> >> >>> AwareRequestFilter.java:154)
>> >> >>> at
>> >> >>> org.springframework.security.web.FilterChainProxy$VirtualFil
>> >> >>> terChain.doFilter(FilterChainProxy.java:342)
>> >> >>> at
>> >> >>> org.apache.fineract.infrastructure.security.filter.TwoFactor
>> >> >>>
>> AuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:122)
>> >> >>> at
>> >> >>> org.springframework.security.web.FilterChainProxy$VirtualFil
>> >> >>> terChain.doFilter(FilterChainProxy.java:342)
>> >> >>> at
>> >> >>> org.springframework.security.web.context.request.async.WebAs
>> >> >>> yncManagerIntegrationFilter.doFilterInternal(WebAsyncManag
>> >> >>> erIntegrationFilter.java:50)
>> >> >>> at
>> >> >>> org.springframework.web.filter.OncePerRequestFilter.doFilter
>> >> >>> (OncePerRequestFilter.java:107)
>> >> >>> at
>> >> >>> org.springframework.security.web.FilterChainProxy$VirtualFil
>> >> >>> terChain.doFilter(FilterChainProxy.java:342)
>> >> >>> at
>> >> >>> org.springframework.security.web.authentication.www.BasicAut
>> >> >>> henticationFilter.doFilter(BasicAuthenticationFilter.java:201)
>> >> >>> at
>> >> >>> org.apache.fineract.infrastructure.security.filter.TenantAwa
>> >> >>> reBasicAuthenticationFilter.doFilter(TenantAwareBasicAuthe
>> >> >>> nticationFilter.java:153)
>> >> >>> at
>> >> >>> org.springframework.security.web.FilterChainProxy$VirtualFil
>> >> >>> terChain.doFilter(FilterChainProxy.java:342)
>> >> >>> at
>> >> >>> org.springframework.security.web.context.SecurityContextPers
>> >> >>> istenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
>> >> >>> at
>> >> >>> org.springframework.security.web.FilterChainProxy$VirtualFil
>> >> >>> terChain.doFilter(FilterChainProxy.java:342)
>> >> >>> at
>> >> >>> org.springframework.security.web.access.channel.ChannelProce
>> >> >>> ssingFilter.doFilter(ChannelProcessingFilter.java:144)
>> >> >>> at
>> >> >>> org.springframework.security.web.FilterChainProxy$VirtualFil
>> >> >>> terChain.doFilter(FilterChainProxy.java:342)
>> >> >>> at
>> >> >>> org.springframework.security.web.FilterChainProxy.doFilterIn
>> >> >>> ternal(FilterChainProxy.java:192)
>> >> >>> at
>> >> >>> org.springframework.security.web.FilterChainProxy.doFilter(F
>> >> >>> ilterChainProxy.java:160)
>> >> >>> at
>> >> >>> org.apache.catalina.core.ApplicationFilterChain.internalDoFi
>> >> >>> lter(ApplicationFilterChain.java:241)
>> >> >>> at
>> >> >>> org.apache.catalina.core.ApplicationFilterChain.doFilter(App
>> >> >>> licationFilterChain.java:208)
>> >> >>> at
>> >> >>> org.springframework.boot.context.web.ErrorPageFilter.doFilte
>> >> >>> r(ErrorPageFilter.java:108)
>> >> >>> at
>> >> >>> org.springframework.boot.context.web.ErrorPageFilter.access$
>> >> >>> 000(ErrorPageFilter.java:58)
>> >> >>> at
>> >> >>> org.springframework.boot.context.web.ErrorPageFilter$1.doFil
>> >> >>> terInternal(ErrorPageFilter.java:87)
>> >> >>> at
>> >> >>> org.springframework.web.filter.OncePerRequestFilter.doFilter
>> >> >>> (OncePerRequestFilter.java:107)
>> >> >>> at
>> >> >>> org.springframework.boot.context.web.ErrorPageFilter.doFilte
>> >> >>> r(ErrorPageFilter.java:100)
>> >> >>> at
>> >> >>> org.apache.catalina.core.ApplicationFilterChain.internalDoFi
>> >> >>> lter(ApplicationFilterChain.java:241)
>> >> >>> at
>> >> >>> org.apache.catalina.core.ApplicationFilterChain.doFilter(App
>> >> >>> licationFilterChain.java:208)
>> >> >>> at
>> >> >>> org.apache.catalina.core.StandardWrapperValve.invoke(Standar
>> >> >>> dWrapperValve.java:219)
>> >> >>> at
>> >> >>> org.apache.catalina.core.StandardContextValve.invoke(Standar
>> >> >>> dContextValve.java:110)
>> >> >>> at
>> >> >>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(A
>> >> >>> uthenticatorBase.java:506)
>> >> >>> at
>> >> >>> org.apache.catalina.core.StandardHostValve.invoke(StandardHo
>> >> >>> stValve.java:169)
>> >> >>> at
>> >> >>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo
>> >> >>> rtValve.java:103)
>> >> >>> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogVa
>> >> >>> lve.java:962)
>> >> >>> at
>> >> >>> org.apache.catalina.core.StandardEngineValve.invoke(Standard
>> >> >>> EngineValve.java:116)
>> >> >>> at
>> >> >>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd
>> >> >>> apter.java:445)
>> >> >>> at
>> >> >>> org.apache.coyote.http11.AbstractHttp11Processor.process(Abs
>> >> >>> tractHttp11Processor.java:1115)
>> >> >>> at
>> >> >>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler
>> >> >>> .process(AbstractProtocol.java:637)
>> >> >>> at
>> >> >>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(
>> >> >>> JIoEndpoint.java:318)
>> >> >>> at
>> >> >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
>> >> >>> Executor.java:1149)
>> >> >>> at
>> >> >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
>> >> >>> lExecutor.java:624)
>> >> >>> at
>> >> >>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.
>> >> >>> run(TaskThread.java:61)
>> >> >>> at java.lang.Thread.run(Thread.java:748)
>> >> >>>
>> >> >>> On Sat, Jun 9, 2018 at 7:20 AM, Raunak Sett <sett.raunak@xxxxxxxxx
>> >
>> >> >>> wrote:
>> >> >>>
>> >> >>> > We should use Angular Material. We should have consistent
>> experience
>> >> >>> > across all platforms and given that we are already following
>> >> material
>> >> >>> > design guidelines on a lot of our android clients as well as web.
>> >> So it
>> >> >>> > would be easier if we just have a common UI/UX guidelines for the
>> >> >>> > consistency.
>> >> >>> >
>> >> >>> > On Fri, Jun 8, 2018 at 10:13 PM Abhay Chawla <
>> >> abhay.chawla97@xxxxxxxxx
>> >> >>> >
>> >> >>> > wrote:
>> >> >>> >
>> >> >>> >> Hello everyone,
>> >> >>> >>
>> >> >>> >> After some discussion, Anwesh and I have a come up with the
>> >> following
>> >> >>> >> points regarding the decision to use Angular Material or
>> bootswatch
>> >> >>> and
>> >> >>> >> ng-bootstrap for the new MifosX Web App (Angular 6):
>> >> >>> >>
>> >> >>> >> 1) ng-bootstrap is a wrapper over bootstrap.js which contains a
>> >> set of
>> >> >>> >> Angular Directives that can be implemented without any
>> >> dependencies on
>> >> >>> >> jQuery or popper.js  https://ng-bootstrap.github.io/#/home
>> >> >>> >> 2) Bootswatch provides a collection of themes(21 + 1 default)
>> for
>> >> >>> >> Bootstrap  https://github.com/thomaspark/bootswatch/
>> >> >>> >> 3) Bootswatch provides with an API which can be integrated with
>> the
>> >> >>> >> platform for theme configuration easily and provide the
>> >> organizations
>> >> >>> with
>> >> >>> >> a choice from these 21 themes
>> https://bootswatch.com/api/4.json
>> >> >>> >> 4) We are currently using the bootswatch material theme to
>> compete
>> >> and
>> >> >>> >> provide with a similar kind of look as by angular-material
>> >> >>> >> 5) New themes if required can be configured easily using
>> bootstrap,
>> >> >>> as a
>> >> >>> >> simple example I have created a demonstration here:
>> >> >>> https://abhaychawla.
>> >> >>> >> github.io/angular-theme/
>> >> >>> >> 6) We can also provide instructions so that the organizations
>> will
>> >> be
>> >> >>> >> able to clone the project, create their own custom theme, build
>> the
>> >> >>> app and
>> >> >>> >> use that theme.
>> >> >>> >> 7) Overall, ng-bootstrap and bootswatch built on top of
>> bootstrap
>> >> are
>> >> >>> >> easy to implement and could be modified and used to suit our
>> needs
>> >> >>> >>
>> >> >>> >> 8) On the other hand, angular-material provides with 4 inbuilt
>> >> >>> material
>> >> >>> >> themes to chose from  https://material.angular.io/
>> >> >>> >> 9) More custom themes can be configured according to
>> organizations
>> >> >>> needs
>> >> >>> >> using angular-material as well but it will be a bit more complex
>> >> >>> >> 10) Overall, angular-material will be more time consuming and a
>> >> little
>> >> >>> >> difficult to implement
>> >> >>> >>
>> >> >>> >> We would like to share this with the community and get their
>> >> opinion
>> >> >>> >> regarding our choice of design framework so that we can finalize
>> >> the
>> >> >>> same
>> >> >>> >> as soon as possible in the initial stage of the project.
>> >> >>> >>
>> >> >>> >> Looking forward to your responses.
>> >> >>> >>
>> >> >>> >> Thanks
>> >> >>> >> Abhay.
>> >> >>> >>
>> >> >>> >> --
>> >> >>> >> You received this message because you are subscribed to the
>> Google
>> >> >>> Groups
>> >> >>> >> "Mifos Google Summer of Code 2018" group.
>> >> >>> >> To unsubscribe from this group and stop receiving emails from
>> it,
>> >> >>> send an
>> >> >>> >> email to gsoc-2018+unsubscribe@xxxxxxxxx.
>> >> >>> >>
>> >> >>> >
>> >> >>> >
>> >> >>> > --
>> >> >>> > Raunak Sett
>> >> >>> >
>> >> >>> > ------------------------------------------------------------
>> >> >>> > ------------------
>> >> >>> > Check out the vibrant tech community on one of the world's most
>> >> >>> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> >> >>> > Mifos-developer mailing list
>> >> >>> > mifos-developer@xxxxxxxxxxxxxxxxxxxxx
>> >> >>> > Unsubscribe or change settings at:
>> >> >>> > https://lists.sourceforge.net/lists/listinfo/mifos-developer
>> >> >>> >
>> >> >>>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> *Ed Cable*
>> >> >> President/CEO, Mifos Initiative
>> >> >> edcable@xxxxxxxxx | Skype: edcable | Mobile: +1.484.477.8649
>> >> >>
>> >> >> *Collectively Creating a World of 3 Billion Maries | *
>> http://mifos.org
>> >> >> <http://facebook.com/mifos>  <http://www.twitter.com/mifos>
>> >> >>
>> >> >>
>> >> >
>> >>
>> >
>> >
>> > ------------------------------------------------------------
>> > ------------------
>> > Check out the vibrant tech community on one of the world's most
>> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> > Mifos-developer mailing list
>> > mifos-developer@xxxxxxxxxxxxxxxxxxxxx
>> > Unsubscribe or change settings at:
>> > https://lists.sourceforge.net/lists/listinfo/mifos-developer
>> >
>>
>