Giter Club home page Giter Club logo

catalog's People

Contributors

activeeon-bot avatar alexfalessi avatar aminelouati avatar amouhoub avatar andrewssobral avatar chloegugli avatar fviale avatar gparanthoen avatar jrochas avatar laurianed avatar lpellegr avatar maelaudren avatar marcocast avatar marounkoussaifi avatar mbenguig avatar mboussaa avatar mklkun avatar mykhailenko avatar nebilbenmabrouk avatar oanabiancaschiopu avatar paraita avatar pedrovelho avatar shatalovyaroslav avatar sophiesongge avatar tao-xinxiu avatar tobwiens avatar vinseon avatar yinan-liu avatar zeineb avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

catalog's Issues

The tests for deleting the revision for object with multiple revisions sometimes failing

This issue doesn't happen directly from REST API, but inside integration tests.

The integration tests that are failing sometimes:
testDeleteTheLatestWorkflowRevisionOfMultipleRevisions
testDeleteAPreviousWorkflowRevisionOfMultipleRevisions

The error is next:

org.hsqldb.HsqlException: integrity constraint violation: foreign key no action; FK2N3992ANCPWW3TASGCDQY9S5O table: CATALOG_OBJECT_REVISION
at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-r5658-f2e27a7.jar:private-2016/10/31-16:34:49]
at org.hsqldb.StatementDML.performReferentialActions(Unknown Source) ~[hsqldb-r5658-f2e27a7.jar:private-2016/10/31-16:34:49]
at org.hsqldb.StatementDML.delete(Unknown Source) ~[hsqldb-r5658-f2e27a7.jar:private-2016/10/31-16:34:49]
at org.hsqldb.StatementDML.executeDeleteStatement(Unknown Source) ~[hsqldb-r5658-f2e27a7.jar:private-2016/10/31-16:34:49]
at org.hsqldb.StatementDML.getResult(Unknown Source) ~[hsqldb-r5658-f2e27a7.jar:private-2016/10/31-16:34:49]
at org.hsqldb.StatementDMQL.execute(Unknown Source) ~[hsqldb-r5658-f2e27a7.jar:private-2016/10/31-16:34:49]
at org.hsqldb.Session.executeCompiledStatement(Unknown Source) ~[hsqldb-r5658-f2e27a7.jar:private-2016/10/31-16:34:49]
at org.hsqldb.Session.execute(Unknown Source) ~[hsqldb-r5658-f2e27a7.jar:private-2016/10/31-16:34:49]
at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source) ~[hsqldb-r5658-f2e27a7.jar:private-2016/10/31-16:34:49]
at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source) ~[hsqldb-r5658-f2e27a7.jar:private-2016/10/31-16:34:49]
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:204) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:45) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:3233) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:3470) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.action.internal.EntityDeleteAction.execute(EntityDeleteAction.java:98) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:560) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:434) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1295) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:468) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3135) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2352) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:485) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:147) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$100(JdbcResourceLocalTransactionCoordinatorImpl.java:38) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:231) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:65) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:61) ~[hibernate-entitymanager-5.1.0.Final.jar:5.1.0.Final]
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:517) ~[spring-orm-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761) ~[spring-tx-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730) ~[spring-tx-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:485) ~[spring-tx-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:291) ~[spring-tx-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) ~[spring-tx-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) ~[spring-tx-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:131) ~[spring-data-jpa-1.9.4.RELEASE.jar:?]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) ~[spring-aop-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) ~[spring-aop-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at com.sun.proxy.$Proxy129.delete(Unknown Source) ~[?:?]
at org.ow2.proactive.catalog.rest.service.CatalogObjectRevisionService.delete(CatalogObjectRevisionService.java:319) ~[main/:?]
at org.ow2.proactive.catalog.rest.service.CatalogObjectRevisionService$$FastClassBySpringCGLIB$$41228097.invoke() ~[main/:?]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:651) ~[spring-aop-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.ow2.proactive.catalog.rest.service.CatalogObjectRevisionService$$EnhancerBySpringCGLIB$$b1122bed_12.delete() ~[main/:?]
at org.ow2.proactive.catalog.rest.controller.CatalogObjectRevisionController.delete(CatalogObjectRevisionController.java:129) ~[main/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:891) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:654) ~[tomcat-embed-core-8.0.33.jar:8.0.33]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) ~[tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) ~[tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) ~[tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ~[tomcat-embed-websocket-8.0.33.jar:8.0.33]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) ~[tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) ~[tomcat-embed-core-8.0.33.jar:8.0.33]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) ~[tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) ~[tomcat-embed-core-8.0.33.jar:8.0.33]
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) ~[tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) ~[tomcat-embed-core-8.0.33.jar:8.0.33]
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) ~[tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) ~[tomcat-embed-core-8.0.33.jar:8.0.33]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) ~[tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) ~[tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) [tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) [tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) [tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) [tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) [tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) [tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502) [tomcat-embed-core-8.0.33.jar:8.0.33]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458) [tomcat-embed-core-8.0.33.jar:8.0.33]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_111]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_111]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.0.33.jar:8.0.33]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_111]

Use of mutation testing in catalog - Help needed

Hello there!

My name is Ana. I noted that you use the mutation testing tool Pit in the project.
I am a postdoctoral researcher at the University of Seville (Spain), and my colleagues and I are studying how mutation testing tools are used in practice. With this aim in mind, we have analysed over 3,500 public GitHub repositories using mutation testing tools, including yours! This work has recently been published in a journal paper available at https://link.springer.com/content/pdf/10.1007/s10664-022-10177-8.pdf.

To complete this study, we are asking for your help to understand better how mutation testing is used in practice, please! We would be extremely grateful if you could contribute to this study by answering a brief survey of 21 simple questions (no more than 6 minutes). This is the link to the questionnaire https://forms.gle/FvXNrimWAsJYC1zB9.

We apologize if you have already received message multiple times or if you have already had the opportunity to complete the survey. If you have already shared your feedback, we want to convey our appreciation, kindly disregard this message, and please accept our apologies for any inconvenience.

Drop me an e-mail if you have any questions or comments ([email protected]). Thank you very much in advance!!

Update kind, contentType during upload the archive of objects

During upload the archive of objects to the catalog it will be created new objects if they not exist yet in catalog.
For existing objects in catalog during upload from archive it will be created new revisions, but the kind, contentType will not be updated.

In general it can be improved to updated kind, contentType, during creating revisions.

Remove useless code

The auto generated classes for query DSL language are not used . We need to remove antlr dependencies and a generation process of this code.

422 error when adding a workflow without name

When a user wants to add a workflow to the bucket without name the returned exception is 422 unprocessable entity. It would be more relevant to have a Bad Request 400 error.
That exception is returned because the server consider that when a name is not provide, the user should provide a zip file. This ambiguity relies on the request double purpose, on one hand it handles archive on the other hand it handles workflows.
The solution would be split the current request into two requests.

No way to search for a bucket by name

We should have the ability to filter the catalog/buckets endpoint by name because other proactive services might want to reference those buckets (like the cloud-automation service).
Doing so would allow us to simplify the injection process of objects in the catalog and decouple it from the other services.
At the moment, such services rely on the autogenerated IDs of buckets, which are likely to change when we inject buckets into the catalog.
This change implies to think on how to handle buckets with the same name (there is no UNIQUE constraint on this field at the moment).

Cannot get the raw object with some private content type in swagger

With the swagger interface :
Upload it with the content-type "myApp" on /catalog/swagger-ui.html#!/catalog-object-controller/createUsingPOST_1
=> the object is well uploaded
Get the raw object on /catalog/swagger-ui.html#!/catalog-object-controller/getRawUsingGET
=> it fails

It seems that it fail only through the swagger interface.
If the content type is "application/myApp", it works.

Catalog object with unvalid name

When creating a catalog object with a wrong name (ex: POST with name "$&%ae"), we get 201. But then it's impossible to access the object (GET / DELETE return 404)

Index length too long for MySQL database.

When using MySQL version 5.7, hibernate from catalog triggers the following error during startup:

org.hibernate.tool.schema.spi.CommandAcceptanceException: Unable to execute command [create index IDX86enfx0lwjc4ygjei28279a8 on METADATA_KEY_VALUE (PA_VALUE)]
Caused by: java.sql.SQLSyntaxErrorException: Specified key was too long; max key length is 3072 bytes

From KeyValueLabelMetadataEntity, the index length is indeed too long as both PA_KEY and PA_VALUE columns are indexed and the size of PA_VALUE itself is fixed to 10KB (see #78 for more details).

Catalog can store workflows with duplicate genericInfo

Example of a worfklow stored in the catalog:

<?xml version="1.0" encoding="UTF-8"?>
<job xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="urn:proactive:jobdescriptor:3.8"
     xsi:schemaLocation="urn:proactive:jobdescriptor:3.8 http://www.activeeon.com/public_content/schemas/proactive/jobdescriptor/3.8/schedulerjob.xsd"
     name="native_task_linux">

    <variables>
        <variable name="NUMBER_OF_PING" value="4"/>
    </variables>
    <description>
        Here a native command will be executed, with an argument.
        We also define a variable above and use it as parameter.
    </description>
      <genericInformation>
    <info name="pca.action.icon" value="/automation-dashboard/styles/patterns/img/wf-icons/native_task_linux.png"/>    
  </genericInformation> 
    <genericInformation>
    <info name="bucketName" value="basic-examples"/>
    <info name="pca.action.icon" value="/automation-dashboard/styles/patterns/img/wf-icons/native_task_linux.png"/>
    <info name="group" value="public-objects"/>
  </genericInformation>
  <taskFlow>
        <task name="Linux">
            <genericInformation>
		        <info name="task.icon" value="/automation-dashboard/styles/patterns/img/wf-icons/native_task_linux.png"/>
		    </genericInformation>
            <nativeExecutable>
                <staticCommand value="ping">
                    <arguments>
                        <argument value="-c"/>
                        <argument value="${NUMBER_OF_PING}"/>
                        <argument value="127.0.0.1"/>
                    </arguments>
                </staticCommand>
            </nativeExecutable>
        </task>
    </taskFlow>
</job>

The extra generic info block was generated by the catalog itself, but does not properly handle initial workflow identation.

The name of the bucket should be unique

In order to simplify the model and usage of the catalog, we can remove the actual unicity constraint that we have on the owner+bucket_name and put it on the bucket_name only instead.

Get /buckets response with kind and owner arguments is not coherent

With the following configuration :
bucket1(owner:bot) containing an object with the kind "worklfow"
bucket2(owner:toto) containing an object with the kind "workflow"
bucket3(owner:bot) not containing an object with the kind "worklfow"

Get /buckets?owner=bot&kind=worklfow
return bucket1 and bucket3

The response is neither a logic AND or OR. It seems that if owner parameter is passed, kind parameter is ignored.

Improve the security of the catalog

Actually, the security of the catalog is handled by this property pa.catalog.security.required.sessionid.

When disabled (value =false), then sessionid is not required. In this case, providing good, wrong or empty value gives the same result.

When enabled (value =true), then normally providing a good sessionid has to be required which is not the case for most of the methods. Indeed, checkAccessBySessionIdForBucketAndThrowIfDeclined method asks first about public buckets. So if is false then sessionId is completely neglected.

public void checkAccessBySessionIdForBucketAndThrowIfDeclined(boolean sessionIdRequired, String sessionId,
            String bucketName) {
        if (!isAPublicBucket(bucketName) && sessionIdRequired) {
            checkBucketPermission(sessionId, bucketName);

        }

    }

However, checkAccessBySessionIdForOwnerOrGroupAndThrowIfDeclined seems to be correct.

The overall behavior should be improved which is quite complex (new design). Indeed, using the script referencing from the studio requires that the script is loaded from a public bucket.

Error when importing a workflow with exotic characters

Importing a workflow with the following variable named DOCUMENT_JSON and its value:

{      "documents": [          {              "id": "1",              "text": "This document is in English."          },          {              "id": "2",              "text": "Este documento está en inglés."          },          {              "id": "3",              "text": "Ce document est en anglais."          },          {              "id": "4",              "text": "��件为��"          },                          {              "id": "5",              "text": "Э�о� док�мен� на�оди��� на англий�ком �з�ке."          }      ]  }

fails because of the weird characters (scroll to the far right of the value) with the following exception:

[2018-08-22 09:35:13,858 461159-175 WARN    o.h.e.j.s.SqlExceptionHelper] SQL Error: 1366, SQLState: 22007                                                                                              [1195/5212]
[2018-08-22 09:35:13,858 461159-175 ERROR   o.h.e.j.s.SqlExceptionHelper] (conn=575) Incorrect string value: '\xC2\x9C\xC2\xAC\xC3\xA6...' for column 'PA_VALUE' at row 1                                          
[2018-08-22 09:35:13,873 461159-175 WARN  r.e.ExceptionHandlerController] Exception: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not execute statement
[2018-08-22 09:35:13,876 461159-175 WARN          o.e.j.s.ServletHandler]                                                                                                                                          
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; nested excepti
on is org.hibernate.exception.DataException: could not execute statement                                                                                                                                           
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:979)                                                                                                              
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
...
Caused by: java.sql.SQLException: Incorrect string value: '\xC2\x9C\xC2\xAC\xC3\xA6...' for column 'PA_VALUE' at row 1
Query is: insert into METADATA_KEY_VALUE (CATALOGOBJECTREVISION, PA_KEY, LABEL, PA_VALUE, ID) values (?, ?, ?, ?, ?), parameters [70,'DOCUMENTS_JSON','variable','{      "documents": [          {              "id
": "1",              "text": "This document is in English."          },          {              "id": "2",              "text": "Este documento está en inglés."          },          {              "id": "3",
            "text": "Ce document est en anglais."          },          {              "id": "4",              "text": "æ¬æ件为è±æ"          }á        é               {              "id": "5",
    "text": "ЭÑÐ¾Ñ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ Ð½Ð°Ñ                                                                           æ¬æ件为è±æ
одиÑÑÑ ÐЭÑоÑÐдокÑменÑÑнаѺе."          }      ]  }',573]
одиÑÑÑoнаaанглийÑкомuÑзÑкеeryTool.exceptionWithQuery(LogQueryTool.java:153)
        at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:255)
        at org.mariadb.jdbc.MariaDbPreparedStatementClient.executeInternal(MariaDbPreparedStatementClient.java:209)
        ... 73 more

URL resolution can be done on server-side when a proxy/router is involved

When a third party (proxy/router) is set in front of the catalog service, the latter is not aware of the domain exposed by the third party and is not capable to generate valid URLS anymore. It is partially fixed for HATEOAS by #44 but not for the Swagger UI which still uses the local interface by default.
A possible fix/improvement would be to let that third-party add a special metadata in the header so the catalog service is aware of the forwarding, as explained in this link.
This should also be explained somewhere in the documentation.

It's not possible to upload zip archive created on Mac

There is a folder (name __MACOSX) inside Mac archives and the catalog tries to parse it as a workflow. As a result, we get an error "The object(s) couldn't be uploaded: It was not possible to parse an object: com.ctc.wstx.exc.WstxIOException: Invalid UTF-8 middle byte 0x0 (at char #99, byte #-1)" and no workflow is uploaded.
When we remove this __MACOSX folder, the upload of the archive works.

Replacement of Generic Information Destroys Formatting

Submitting a workflow with kind="workflow" parses the workflow, removes the Generic Information inside the workflow xml and adds new Generic Information.

That process has several drawbacks:

  • Destroys formatting
  • Creates issue with line endings

Unable to compile catalog

Hello, I'm encountering an issue while compiling catalog.

I run the following commands:

git clone https://github.com/ow2-proactive/catalog
cd catalog
./gradlew clean compileTest

I obtained the following error, obtained using the `--stacktrace1 command line options with the same gradle tasks:

* Exception is:
org.gradle.api.InvalidUserDataException: Cannot change dependencies of configuration 'detachedConfiguration1' after it has been resolved.
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.validateMutation(DefaultConfiguration.java:597)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$2.run(DefaultConfiguration.java:145)
	at org.gradle.api.internal.DefaultDomainObjectCollection.assertMutable(DefaultDomainObjectCollection.java:267)
	at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:158)
	at org.gradle.api.internal.DelegatingDomainObjectSet.add(DelegatingDomainObjectSet.java:81)
	at java_util_Set$add$0.call(Unknown Source)
	at io.spring.gradle.dependencymanagement.DependencyManagement$_resolve_closure2.doCall(DependencyManagement.groovy:152)
	at io.spring.gradle.dependencymanagement.DependencyManagement.resolve(DependencyManagement.groovy:152)
	at io.spring.gradle.dependencymanagement.DependencyManagement.resolveIfNecessary(DependencyManagement.groovy:134)
	at io.spring.gradle.dependencymanagement.DependencyManagement.getExclusions(DependencyManagement.groovy:128)
	at io.spring.gradle.dependencymanagement.DependencyManagement$getExclusions$1.call(Unknown Source)
	at io.spring.gradle.dependencymanagement.DependencyManagementContainer.getExclusions(DependencyManagementContainer.groovy:104)
	at io.spring.gradle.dependencymanagement.DependencyManagementContainer$getExclusions$1.call(Unknown Source)
	at io.spring.gradle.dependencymanagement.exclusions.ExclusionConfiguringAction.findExcludedDependencies(ExclusionConfiguringAction.groovy:100)
	at io.spring.gradle.dependencymanagement.exclusions.ExclusionConfiguringAction.applyMavenExclusions(ExclusionConfiguringAction.groovy:77)
	at io.spring.gradle.dependencymanagement.exclusions.ExclusionConfiguringAction.this$2$applyMavenExclusions(ExclusionConfiguringAction.groovy)
	at io.spring.gradle.dependencymanagement.exclusions.ExclusionConfiguringAction.execute(ExclusionConfiguringAction.groovy:72)
	at io.spring.gradle.dependencymanagement.exclusions.ExclusionConfiguringAction.execute(ExclusionConfiguringAction.groovy)
	at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:93)
	at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:82)
	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44)
	at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:79)
	at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:30)
	at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
	at com.sun.proxy.$Proxy24.beforeResolve(Unknown Source)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.performPreResolveActions(DefaultConfiguration.java:384)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveGraphIfRequired(DefaultConfiguration.java:365)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveNow(DefaultConfiguration.java:342)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.getResolvedConfiguration(DefaultConfiguration.java:335)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getResolvedConfiguration(Unknown Source)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getFiles(DefaultConfiguration.java:661)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.getFiles(DefaultConfiguration.java:288)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getFiles(Unknown Source)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext$FileTreeConverter.convertInto(DefaultFileCollectionResolveContext.java:200)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:107)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileTrees(DefaultFileCollectionResolveContext.java:78)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext$FileTreeConverter.convertInto(DefaultFileCollectionResolveContext.java:186)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.doResolve(DefaultFileCollectionResolveContext.java:102)
	at org.gradle.api.internal.file.collections.DefaultFileCollectionResolveContext.resolveAsFileTrees(DefaultFileCollectionResolveContext.java:78)
	at org.gradle.api.internal.changedetection.state.DefaultFileCollectionSnapshotter.visitFiles(DefaultFileCollectionSnapshotter.java:85)
	at org.gradle.api.internal.changedetection.state.DefaultFileCollectionSnapshotter.snapshot(DefaultFileCollectionSnapshotter.java:54)
	at org.gradle.api.internal.changedetection.rules.TaskUpToDateState.<init>(TaskUpToDateState.java:56)
	at org.gradle.api.internal.changedetection.changes.DefaultTaskArtifactStateRepository$TaskArtifactStateImpl.getStates(DefaultTaskArtifactStateRepository.java:132)
	at org.gradle.api.internal.changedetection.changes.DefaultTaskArtifactStateRepository$TaskArtifactStateImpl.isUpToDate(DefaultTaskArtifactStateRepository.java:70)
	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:52)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
	at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
	at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
	at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
	at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
	at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
	at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
	at org.gradle.internal.Factories$1.create(Factories.java:22)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
	at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
	at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
	at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
	at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
	at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
	at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
	at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
	at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:48)
	at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51)
	at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28)
	at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43)
	at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:170)
	at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
	at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
	at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
	at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
	at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
	at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
	at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
	at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
	at org.gradle.launcher.Main.doAction(Main.java:33)
	at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
	at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
	at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
	at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
	at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
	at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
	at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)

Catalog commit sha: b5bc9f7fb27870e2865ac4bd4cf4ee367cd3dfff.
Gradle info:

./gradlew --version    

------------------------------------------------------------
Gradle 2.10
------------------------------------------------------------

Build time:   2015-12-21 21:15:04 UTC
Build number: none
Revision:     276bdcded730f53aa8c11b479986aafa58e124a6

Groovy:       2.4.4
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.8.0_181 (Oracle Corporation 25.181-b13)
OS:           Linux 4.19.0-5-amd64 amd64

If you need any additional info, please ask me.

Thank you.

There is an error when publish workflow with generic info with Property Name "name"

It's not possible to publish workflow to catalog if the wf conatins generic info with Property Name "name".
This is due to unique constraint of key field inside the metadata table in catalog service.
Exact exception is:
org.hsqldb.HsqlException: integrity constraint violation: unique constraint or index violation; UKKJ251Y7PARAV20FN5HJGAHBKG table: METADATA_KEY_VALUE

Application not debuggable

Springboot is not handling class injections properly so it's not possible to debug properly the application (for example right click the Application main class and select "Debug as Java application" on Eclipse).
A workaround is to debug the bootRun task, but then we loose the stdin/stdout streams.

GET bucket resources change index

When doing a GET /catalog/buckets/calendars/resources?kind=calendar , the response is not always the same. The objects in the list aren't ordered the same way even if the list contains the same objects.
I put 2 responses of this request, the 2nd was executed 20 seconds after the first one. You can see that 'every_monday' is line 137 for the 1st request and then line 98 for the 2nd.
This results in weird behavior in the portal because we don't re-order them. If you select a calendar and the calendar list refreshes, another calendar might be selected instead if the index isn't the same.

Inconsistent default selection of catalog objects

By going through the catalog portal, the default selected catalog object is not the same on the dev environment (trydev) as the one on a local environment.
For examples, It selects "Key_value" object from "basic-examples" bucket on dev however it selects "remote_visualization" by default when accessing catalog portal locally.

I notice that this is applicable to other buckets, not only "basic-examples".

Moreover, the default selection should not use the first element in the displayed list ti be selected? For example, "Native_task" for "basic examples". Why should I scroll down to check out the selected catalog object?

This should be standardized.

Icons are not displayed in the generated report because of SSL certificate

Description
When the https mode is enabled, it seems that the SSL certificate does not allow workflow icons to be displayed in the generated catalog.
Capture d’écran 2020-07-28 à 10 39 27

Steps to reproduce it

  • Enable HTTPS mode
  • Install an SSL certificate
  • Generate the catalog report

How to solve it
A possible fix is to update the report generation request by adding an option to bypass SSL certificate checking like --no-check-certificate for wget or -k option for curl queries.

Impossible to use HSQLDB in server mode

Using the following parameters with the catalog doesn't work (relevant to any version up to the date of this issue) from a release or standalone:

spring.datasource.driverClassName=org.hsqldb.jdbc.JDBCDriver
spring.datasource.url=jdbc:hsqldb:hsql://localhost:9001/catalog
spring.datasource.username=SA
spring.datasource.password=spring.jpa.database-platform=org.hibernate.dialect.HSQLDialect

The same parameters work for the scheduling-api repo.

I have the following errors:

[2018-08-24 11:04:48,140       main WARN            o.o.p.u.JettyStarter] Failed to start context /catalog                                                                                                         
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfig
uration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory                                  
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)                                                               
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)                                                                  
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)                                                                    
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)                                                                                                 
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)                                                                             
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1054)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:829)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
        at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:800)
        at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:444)
        at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:791)
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:294)
        at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1349)
        at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1342)
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741)
...
Caused by: java.sql.SQLException: General error: database alias does not exist
        at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
        at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
        at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
        at org.hsqldb.jdbc.JDBCDriver$1.run(Unknown Source)
Caused by: org.hsqldb.HsqlException: General error: database alias does not exist
        at org.hsqldb.error.Error.error(Unknown Source)
        at org.hsqldb.ClientConnection.<init>(Unknown Source)
        ... 2 more

On the other side, using MariaDB works, so the Hibernate stuff creating the database, schemas and so on seem to work properly...

Generic information name and project_name duplications

The following test has be done through the catalog swagger-ui.
When submitting a workflow the several generic informations are added. Among them, the generic informations name and project_name are added.
After getting the workflow and resubmitting it, the generic informations are added once again. As a consequence, when an user get the workflow, it has two times the generic informations name and project-name instead of once.

Secure graphQL

The graphQL of Catalog can be accessed without any security.
It should be added sessionID in the header.

Archive of workflows

During get Archive of workflows using GET /buckets/{bucketName}/resources
in name put the 'Give a list of name separated by comma to get them in an archive',
it will be created the archive of files without extension, name of file will correspond to name of object.
This logic is done as object in bucket can be any type.

But as improvement if the object's kind equals to'workflow', we can add '.xml' extension, if doesn't already exist in name.

Unable to create 'METADATA_KEY_VALUE' table with MySQL.

When relying on MySQL, the catalog fails to initialize with the following error:

Unable to execute command [create table METADATA_KEY_VALUE (ID BINARY(16) not null, KEY varchar(255) not null, LABEL varchar(255), VALUE varchar(255) not null, CATALOGOBJECTREVISION BINARY(16), primary key (ID))

The table METADATA_KEY_VALUE contains a column KEY which is a reserved word in MySQL.

Identical issue closed in workflow-catalog:
ow2-proactive/workflow-catalog-old#47

With gradle plugin no amplification works for ProActive catalog

Using catalog dspot branch here

I was able to run using the master dspot branch and the following command:
java -jar ~/.m2/repository/eu/stamp-project/dspot/2.0.1-SNAPSHOT/dspot-2.0.1-SNAPSHOT-jar-with-dependencies.jar --verbose --path-to-properties ./dspot.properties --automatic-builder GradleBuilder -t all --budgetizer SimpleBudgetizer

I always get 0 new tests no matter which amplifier I use. I tried them all.

======= REPORT =======
PitMutantScoreSelector:
The original test suite kills 192 mutants
The amplification results with 0 new tests
it kills 0 more mutants

My properties file:

project=.
src=src/main/java/
testSrc=src/test/java/
javaVersion=8
outputDirectory=result/
classes=build/classes/main/
testClasses=build/classes/test/
filter=org.ow2.proactive.catalog.*

Meanwhile I will rise an issue on the DSpot project.

Thanks in advance,

Issue when filtering catalog object by name

Description
When a catalog object name contains one of these characters "{" or "}", the filtered catalog objects are not displayed.
Screenshot 2021-03-16 at 17 23 39
Screenshot 2021-03-16 at 17 23 22

Steps to reproduce it

  1. Create a workflow where the name contains one of these characters "{" or "}"
  2. Push it to catalog
  3. Search for this workflow using the Object Name filter by putting the workflow name

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.