Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generated Service Cutter ERD Input not compatible with ServiceCutter #313

Open
Tarow opened this issue Dec 11, 2021 · 2 comments
Open

Generated Service Cutter ERD Input not compatible with ServiceCutter #313

Tarow opened this issue Dec 11, 2021 · 2 comments

Comments

@Tarow
Copy link

Tarow commented Dec 11, 2021

I just wanted to get started with Context Mapper and Service Cutter and copied the example cml-file from here.

Generating the ERD file as JSON and uploading it to Service Cutter results in an error though. ServiceCutter can not read the generated file. Heres the generated ERD JSON and the corresponding log after uploading it to ServiceCutter:
ddd-sample.zip

The stacktrace:

servicecutter-engine-1  | javax.persistence.NonUniqueResultException: result returns more than one elements
servicecutter-engine-1  | 	at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:505)
servicecutter-engine-1  | 	at org.hibernate.jpa.criteria.compile.CriteriaQueryTypeQueryAdapter.getSingleResult(CriteriaQueryTypeQueryAdapter.java:71)
servicecutter-engine-1  | 	at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:202)
servicecutter-engine-1  | 	at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:74)
servicecutter-engine-1  | 	at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:99)
servicecutter-engine-1  | 	at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:90)
servicecutter-engine-1  | 	at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:415)
servicecutter-engine-1  | 	at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:393)
servicecutter-engine-1  | 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
servicecutter-engine-1  | 	at org.springframework.data.repository.core.support.RepositoryFactorySupport$DefaultMethodInvokingMethodInterceptor.invoke(RepositoryFactorySupport.java:506)
servicecutter-engine-1  | 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
servicecutter-engine-1  | 	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
servicecutter-engine-1  | 	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
servicecutter-engine-1  | 	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
servicecutter-engine-1  | 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
servicecutter-engine-1  | 	at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
servicecutter-engine-1  | 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
servicecutter-engine-1  | 	at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodIntercceptor.invoke(CrudMethodMetadataPostProcessor.java:122)
servicecutter-engine-1  | 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
servicecutter-engine-1  | 	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
servicecutter-engine-1  | 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
servicecutter-engine-1  | 	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
servicecutter-engine-1  | 	at com.sun.proxy.$Proxy76.findByContextAndNameAndUserSystem(Unknown Source)
servicecutter-engine-1  | 	at ch.hsr.servicecutter.importer.ImportEndpoint.lambda$importERD$3(ImportEndpoint.java:153)
servicecutter-engine-1  | 	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
servicecutter-engine-1  | 	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
servicecutter-engine-1  | 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
servicecutter-engine-1  | 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
servicecutter-engine-1  | 	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
servicecutter-engine-1  | 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
servicecutter-engine-1  | 	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
servicecutter-engine-1  | 	at ch.hsr.servicecutter.importer.ImportEndpoint.importERD(ImportEndpoint.java:153)
servicecutter-engine-1  | 	at ch.hsr.servicecutter.importer.ImportEndpoint$$FastClassBySpringCGLIB$$6abe024c.invoke(<generated>)
servicecutter-engine-1  | 	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
servicecutter-engine-1  | 	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717)
servicecutter-engine-1  | 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
servicecutter-engine-1  | 	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
servicecutter-engine-1  | 	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
servicecutter-engine-1  | 	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
servicecutter-engine-1  | 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
servicecutter-engine-1  | 	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)
servicecutter-engine-1  | 	at ch.hsr.servicecutter.importer.ImportEndpoint$$EnhancerBySpringCGLIB$$2428e1ad.importERD(<generated>)
servicecutter-engine-1  | 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
servicecutter-engine-1  | 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
servicecutter-engine-1  | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
servicecutter-engine-1  | 	at java.lang.reflect.Method.invoke(Method.java:498)
servicecutter-engine-1  | 	at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
servicecutter-engine-1  | 	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151)
servicecutter-engine-1  | 	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:172)
servicecutter-engine-1  | 	at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:195)
servicecutter-engine-1  | 	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104)
servicecutter-engine-1  | 	at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:384)
servicecutter-engine-1  | 	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:342)
servicecutter-engine-1  | 	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:101)
servicecutter-engine-1  | 	at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:271)
servicecutter-engine-1  | 	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
servicecutter-engine-1  | 	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
servicecutter-engine-1  | 	at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
servicecutter-engine-1  | 	at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
servicecutter-engine-1  | 	at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
servicecutter-engine-1  | 	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297)
servicecutter-engine-1  | 	at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254)
servicecutter-engine-1  | 	at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1030)
servicecutter-engine-1  | 	at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:377)
servicecutter-engine-1  | 	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)
servicecutter-engine-1  | 	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)
servicecutter-engine-1  | 	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
servicecutter-engine-1  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
servicecutter-engine-1  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
servicecutter-engine-1  | 	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
servicecutter-engine-1  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
servicecutter-engine-1  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
servicecutter-engine-1  | 	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
servicecutter-engine-1  | 	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
servicecutter-engine-1  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
servicecutter-engine-1  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
servicecutter-engine-1  | 	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
servicecutter-engine-1  | 	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
servicecutter-engine-1  | 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
servicecutter-engine-1  | 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
servicecutter-engine-1  | 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
servicecutter-engine-1  | 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
servicecutter-engine-1  | 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
servicecutter-engine-1  | 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
servicecutter-engine-1  | 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
servicecutter-engine-1  | 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
servicecutter-engine-1  | 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
servicecutter-engine-1  | 	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
servicecutter-engine-1  | 	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
servicecutter-engine-1  | 	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521)
servicecutter-engine-1  | 	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478)
servicecutter-engine-1  | 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
servicecutter-engine-1  | 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
servicecutter-engine-1  | 	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
servicecutter-engine-1  | 	at java.lang.Thread.run(Thread.java:748)
@stefan-ka
Copy link
Member

Hi @Tarow

Thanks for reporting this one and sorry for the late response!
I'm quite busy at the moment with other projects...

But I will try to reproduce this and see what the problem is...

Best regards,
Stefan

@Tarow
Copy link
Author

Tarow commented Jan 23, 2022

Hi @stefan-ka,

thanks alot. To give some more information:
When generating the service-cutter input from the cargo example linked above, i looked at the generated JSON output and noticed, that some entities have duplicate nanoentities. For example:
{ "name" : "Delivery", "nanoentities" : [ "misdirected", "eta", "estimatedArrivalTime", "isUnloadedAtDestination", "calculatedAt", "transportStatus", "lastKnownLocation", "currentVoyage", "nextExpectedActivity", "routingStatus", "lastEvent", "transportStatus", "routingStatus" ] }

transportStatus and routingStatus are duplicate in this case. After i deleted all the duplicate entries, i was able to read the input with Service Cutter.

@stefan-ka stefan-ka added this to the m6.10.0 milestone Aug 17, 2023
@stefan-ka stefan-ka removed this from the m6.10.0 milestone Jan 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants