GithubHelp home page GithubHelp logo

atlasmap-attic / atlasmap-runtime Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 8.0 34.85 MB

AtlasMap runtime engine and design time services

Home Page: http://atlasmap.io

License: Other

Java 99.42% Shell 0.34% Batchfile 0.24%

atlasmap-runtime's People

Contributors

apupier avatar chirino avatar cunningt avatar igarashitm avatar jbakermd avatar jpav avatar mmelko avatar pure-bot[bot] avatar rhuss avatar zregvart avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

atlasmap-runtime's Issues

[Field Action] Create a type convert field action

  1. Field Action should support source FieldType.ALL target FieldType.ALL

  2. Allows the user to add a transformation that would then allow for add'l field actions based on type

  3. For example:

    User has 8005551212 stored as an integer. They want to convert to a string, then do a substring to capture the nxx value (555) and store it as a string in a field called "nxx".

  4. Solution: Add a Conversion field action.. set source to Integer, and target to String

  5. UI allows for add'l stock Field Actions on this mapping

  6. When code complete, create a ticket for atlas-ui to integrate

AtlasMap documentation

Kick off AtlasMap documentation discussion and implementation

  • What to document
  • What doc gen tool to use

Could not load Java document, error: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class

When running the standard Twitter to Salesforce integration (with all connectors on the classpath), we hit this use:

image

Here's the logfile:

Logfile
Starting the Java application using /opt/run-java/run-java.sh ...
exec java -Djava.net.preferIPv4Stack=true -Djavax.net.ssl.trustStore=/tls-keystore/openshift-truststore.jks -Duser.home=/tmp -Xmx306m -XX:ParallelGCThreads=2 -XX:ConcGCThreads=2 -Djava.util.concurrent.ForkJoinPool.common.parallelism=2 -cp . -jar /deployments/runtime.jar
Picked up JAVA_TOOL_OPTIONS: -Duser.home=/deployments -Duser.name=jboss

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.2.RELEASE)

2017-07-20 18:17:30.249  INFO 1 --- [           main] io.atlasmap.runtime.Application          : Starting Application on syndesis-atlasmap-2-g5cg5 with PID 1 (/deployments/runtime.jar started by jboss in /deployments)
2017-07-20 18:17:30.253  INFO 1 --- [           main] io.atlasmap.runtime.Application          : No active profile set, falling back to default profiles: default
2017-07-20 18:17:30.333  INFO 1 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@515f550a: startup date [Thu Jul 20 18:17:30 UTC 2017]; root of context hierarchy
2017-07-20 18:17:31.957  INFO 1 --- [           main] p.s.r.ResteasyEmbeddedServletInitializer : Finding JAX-RS Application classes
2017-07-20 18:17:31.959  INFO 1 --- [           main] p.s.r.ResteasyEmbeddedServletInitializer : Property resteasy.jaxrs.app.registration has not been set, JAX-RS Application classes registration is being set to AUTO
2017-07-20 18:17:31.960  INFO 1 --- [           main] p.s.r.ResteasyEmbeddedServletInitializer : Searching for JAX-RS Application Spring beans
2017-07-20 18:17:32.358  INFO 1 --- [           main] p.s.r.ResteasyEmbeddedServletInitializer : JAX-RS Application class found: io.atlasmap.runtime.ServiceConfiguration$JavaServiceEmptyClasspath
2017-07-20 18:17:32.358  INFO 1 --- [           main] p.s.r.ResteasyEmbeddedServletInitializer : JAX-RS Application class found: io.atlasmap.service.AtlasService
2017-07-20 18:17:32.397  INFO 1 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2017-07-20 18:17:32.602  INFO 1 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.apache.camel.spring.boot.CamelAutoConfiguration' of type [org.apache.camel.spring.boot.CamelAutoConfiguration$$EnhancerBySpringCGLIB$$2f238874] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2017-07-20 18:17:32.855  INFO 1 --- [           main] org.xnio                                 : XNIO version 3.3.6.Final
2017-07-20 18:17:32.873  INFO 1 --- [           main] org.xnio.nio                             : XNIO NIO Implementation Version 3.3.6.Final
2017-07-20 18:17:32.917  WARN 1 --- [           main] io.undertow.websockets.jsr               : UT026009: XNIO worker was not set on WebSocketDeploymentInfo, the default worker will be used
2017-07-20 18:17:32.918  WARN 1 --- [           main] io.undertow.websockets.jsr               : UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
2017-07-20 18:17:32.941  INFO 1 --- [           main] io.undertow.servlet                      : Initializing Spring embedded WebApplicationContext
2017-07-20 18:17:32.941  INFO 1 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 2610 ms
2017-07-20 18:17:33.186  INFO 1 --- [           main] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]
2017-07-20 18:17:33.191  INFO 1 --- [           main] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'io.atlasmap.runtime.ServiceConfiguration$JavaServiceEmptyClasspath' to [/*]
2017-07-20 18:17:33.193  INFO 1 --- [           main] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'io.atlasmap.service.AtlasService' to [/*]
2017-07-20 18:17:33.196  INFO 1 --- [           main] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'metricsFilter' to: [/*]
2017-07-20 18:17:33.197  INFO 1 --- [           main] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2017-07-20 18:17:33.197  INFO 1 --- [           main] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2017-07-20 18:17:33.198  INFO 1 --- [           main] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2017-07-20 18:17:33.198  INFO 1 --- [           main] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2017-07-20 18:17:33.198  INFO 1 --- [           main] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'webRequestLoggingFilter' to: [/*]
2017-07-20 18:17:33.198  INFO 1 --- [           main] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'applicationContextIdFilter' to: [/*]
2017-07-20 18:17:33.603  INFO 1 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@515f550a: startup date [Thu Jul 20 18:17:30 UTC 2017]; root of context hierarchy
2017-07-20 18:17:33.690  INFO 1 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2017-07-20 18:17:33.692  INFO 1 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2017-07-20 18:17:33.740  INFO 1 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-07-20 18:17:33.740  INFO 1 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-07-20 18:17:33.785  INFO 1 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-07-20 18:17:34.630  INFO 1 --- [           main] o.a.c.i.converter.DefaultTypeConverter   : Loaded 209 type converters
2017-07-20 18:17:35.736  INFO 1 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2017-07-20 18:17:35.746  INFO 1 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@3d278b4d: startup date [Thu Jul 20 18:17:35 UTC 2017]; parent: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@515f550a
2017-07-20 18:17:35.791  INFO 1 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Overriding bean definition for bean 'handlerExceptionResolver' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration; factoryMethodName=handlerExceptionResolver; initMethodName=null; destroyMethodName=(inferred); defined in org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=endpointWebMvcChildContextConfiguration; factoryMethodName=compositeHandlerExceptionResolver; initMethodName=null; destroyMethodName=(inferred); defined in org.springframework.boot.actuate.autoconfigure.EndpointWebMvcChildContextConfiguration]
2017-07-20 18:17:35.826  INFO 1 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2017-07-20 18:17:35.848  INFO 1 --- [           main] io.undertow.servlet                      : Initializing Spring embedded WebApplicationContext
2017-07-20 18:17:35.848  INFO 1 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 102 ms
2017-07-20 18:17:35.850  INFO 1 --- [           main] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]
2017-07-20 18:17:35.959  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/loggers/{name:.*}],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.LoggersMvcEndpoint.get(java.lang.String)
2017-07-20 18:17:35.960  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/loggers/{name:.*}],methods=[POST],consumes=[application/vnd.spring-boot.actuator.v1+json || application/json],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.LoggersMvcEndpoint.set(java.lang.String,java.util.Map<java.lang.String, java.lang.String>)
2017-07-20 18:17:35.960  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/loggers || /loggers.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-20 18:17:35.961  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/beans || /beans.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-20 18:17:35.963  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/configprops || /configprops.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-20 18:17:35.964  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/auditevents || /auditevents.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public org.springframework.http.ResponseEntity<?> org.springframework.boot.actuate.endpoint.mvc.AuditEventsMvcEndpoint.findByPrincipalAndAfterAndType(java.lang.String,java.util.Date,java.lang.String)
2017-07-20 18:17:35.969  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/mappings || /mappings.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-20 18:17:35.972  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/metrics/{name:.*}],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.MetricsMvcEndpoint.value(java.lang.String)
2017-07-20 18:17:35.972  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/metrics || /metrics.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-20 18:17:35.972  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/trace || /trace.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-20 18:17:35.973  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/dump || /dump.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-20 18:17:35.974  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/env/{name:.*}],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EnvironmentMvcEndpoint.value(java.lang.String)
2017-07-20 18:17:35.974  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/env || /env.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-20 18:17:35.975  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/heapdump || /heapdump.json],methods=[GET],produces=[application/octet-stream]}" onto public void org.springframework.boot.actuate.endpoint.mvc.HeapdumpMvcEndpoint.invoke(boolean,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws java.io.IOException,javax.servlet.ServletException
2017-07-20 18:17:35.977  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/autoconfig || /autoconfig.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-20 18:17:35.979  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/health || /health.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.invoke(javax.servlet.http.HttpServletRequest,java.security.Principal)
2017-07-20 18:17:35.979  INFO 1 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/info || /info.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2017-07-20 18:17:35.993  INFO 1 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public java.util.Map<java.lang.String, java.lang.Object> org.springframework.boot.actuate.endpoint.mvc.ManagementErrorEndpoint.invoke()
2017-07-20 18:17:35.998  INFO 1 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-07-20 18:17:35.999  INFO 1 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-07-20 18:17:36.016  INFO 1 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@3d278b4d: startup date [Thu Jul 20 18:17:35 UTC 2017]; parent: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@515f550a
2017-07-20 18:17:36.117  INFO 1 --- [           main] b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8181 (http)
2017-07-20 18:17:36.122  INFO 1 --- [           main] o.s.c.support.DefaultLifecycleProcessor  : Starting beans in phase 0
2017-07-20 18:17:36.188  INFO 1 --- [           main] o.a.camel.spring.boot.RoutesCollector    : Loading additional Camel XML routes from: classpath:camel/*.xml
2017-07-20 18:17:36.188  INFO 1 --- [           main] o.a.camel.spring.boot.RoutesCollector    : Loading additional Camel XML rests from: classpath:camel-rest/*.xml
2017-07-20 18:17:36.190  INFO 1 --- [           main] o.a.camel.spring.SpringCamelContext      : Apache Camel 2.19.0.fuse-000035 (CamelContext: camel-1) is starting
2017-07-20 18:17:36.191  INFO 1 --- [           main] o.a.c.m.ManagedManagementStrategy        : JMX is enabled
2017-07-20 18:17:36.303  INFO 1 --- [           main] o.a.c.i.DefaultRuntimeEndpointRegistry   : Runtime endpoint registry is in extended mode gathering usage statistics of all incoming and outgoing endpoints (cache limit: 1000)
2017-07-20 18:17:36.306  INFO 1 --- [           main] o.a.camel.spring.SpringCamelContext      : StreamCaching is not in use. If using streams then its recommended to enable stream caching. See more details at http://camel.apache.org/stream-caching.html
2017-07-20 18:17:36.307  INFO 1 --- [           main] o.a.camel.spring.SpringCamelContext      : Total 0 routes, of which 0 are started.
2017-07-20 18:17:36.307  INFO 1 --- [           main] o.a.camel.spring.SpringCamelContext      : Apache Camel 2.19.0.fuse-000035 (CamelContext: camel-1) started in 0.118 seconds
2017-07-20 18:17:36.310  INFO 1 --- [           main] org.jboss.resteasy.resteasy_jaxrs.i18n   : RESTEASY002225: Deploying javax.ws.rs.core.Application: class io.atlasmap.runtime.ServiceConfiguration$JavaServiceEmptyClasspath
2017-07-20 18:17:36.310  INFO 1 --- [           main] org.jboss.resteasy.resteasy_jaxrs.i18n   : RESTEASY002225: Deploying javax.ws.rs.core.Application: class io.atlasmap.service.AtlasService
2017-07-20 18:17:36.312  INFO 1 --- [           main] b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8080 (http)
2017-07-20 18:17:36.314  INFO 1 --- [           main] io.atlasmap.runtime.Application          : Started Application in 6.576 seconds (JVM running for 7.197)
2017-07-20 18:17:46.364  INFO 1 --- [  XNIO-2 task-1] io.undertow.servlet                      : Initializing Spring FrameworkServlet 'dispatcherServlet'
2017-07-20 18:17:46.365  INFO 1 --- [  XNIO-2 task-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2017-07-20 18:17:46.380  INFO 1 --- [  XNIO-2 task-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 15 ms
2017-07-20 18:21:51.695  WARN 1 --- [  XNIO-3 task-3] i.a.java.inspect.ClassInspectionService  : VarArg, Bridge, Synthetic or Default method compareTo detected
2017-07-20 18:21:51.727 ERROR 1 --- [  XNIO-3 task-4] io.atlasmap.java.service.JavaService     : Error inspecting class with classpath: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class

java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
	at io.atlasmap.java.inspect.ClassInspectionService.detectParameterizedTypes(ClassInspectionService.java:768) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectField(ClassInspectionService.java:536) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClassFields(ClassInspectionService.java:587) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClass(ClassInspectionService.java:282) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectField(ClassInspectionService.java:509) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClassFields(ClassInspectionService.java:587) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClass(ClassInspectionService.java:282) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectGetMethod(ClassInspectionService.java:373) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClassMethods(ClassInspectionService.java:628) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClass(ClassInspectionService.java:304) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectGetMethod(ClassInspectionService.java:373) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClassMethods(ClassInspectionService.java:628) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClass(ClassInspectionService.java:304) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectField(ClassInspectionService.java:509) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClassFields(ClassInspectionService.java:587) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClass(ClassInspectionService.java:282) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectGetMethod(ClassInspectionService.java:373) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClassMethods(ClassInspectionService.java:628) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClass(ClassInspectionService.java:276) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectField(ClassInspectionService.java:509) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClassFields(ClassInspectionService.java:587) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClass(ClassInspectionService.java:275) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectField(ClassInspectionService.java:509) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClassFields(ClassInspectionService.java:587) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClass(ClassInspectionService.java:275) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClass(ClassInspectionService.java:234) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.inspect.ClassInspectionService.inspectClass(ClassInspectionService.java:180) ~[atlas-java-inspect-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at io.atlasmap.java.service.JavaService.inspectClass(JavaService.java:155) ~[atlas-java-service-1.15.0-SNAPSHOT.jar!/:1.15.0-SNAPSHOT]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_131]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_131]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_131]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131]
	at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:140) [resteasy-jaxrs-3.1.0.Final.jar!/:3.1.0.Final]
	at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:294) [resteasy-jaxrs-3.1.0.Final.jar!/:3.1.0.Final]
	at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:248) [resteasy-jaxrs-3.1.0.Final.jar!/:3.1.0.Final]
	at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:235) [resteasy-jaxrs-3.1.0.Final.jar!/:3.1.0.Final]
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:398) [resteasy-jaxrs-3.1.0.Final.jar!/:3.1.0.Final]
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:205) [resteasy-jaxrs-3.1.0.Final.jar!/:3.1.0.Final]
	at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221) [resteasy-jaxrs-3.1.0.Final.jar!/:3.1.0.Final]
	at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) [resteasy-jaxrs-3.1.0.Final.jar!/:3.1.0.Final]
	at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) [resteasy-jaxrs-3.1.0.Final.jar!/:3.1.0.Final]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api-3.1.0.jar!/:3.1.0]
	at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) [spring-boot-1.5.2.RELEASE.jar!/:1.5.2.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:108) [spring-boot-actuator-1.5.2.RELEASE.jar!/:1.5.2.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105) [spring-web-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) [spring-web-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) [spring-web-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106) [spring-boot-actuator-1.5.2.RELEASE.jar!/:1.5.2.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) [undertow-core-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) [undertow-core-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) [undertow-core-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104) [undertow-servlet-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:211) [undertow-core-1.4.11.Final.jar!/:1.4.11.Final]
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:809) [undertow-core-1.4.11.Final.jar!/:1.4.11.Final]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]

Integrate PropertyField support

Implement a Property handling strategy

  • Support Environment variables
  • Support Java System properties
  • Support Atlas Mapping defined properties
  • Support runtime properties
  • Support a default processing order: Env, Sys, Mapping, Runtime
    • Last "wins"
  • Support a way to configure the processing order and/or disable certain property bags

[Discuss] Thoughts on community development contributions/policy

Random thought(s) on community development contributions:

  1. A lot of the value in AtlasMap is the design-time integration of data formats, converters and field actions. In order to maintain the high degree of design-time value, does it make sense to ask community contributions to also include design-time artifacts before being included in the main distribution? We could have an atlasmap-extras for runtime-only supported things, etc.

  2. New formats should (as-best possible) include auto-type detection

[GTKA] Add a validation rule

Atlasmap supports the ability to validate mapping files ahead of runtime execution. Additionally, these validation rules can inform the UI at design time to assist the user in correcting their mapping definition.

  1. Identify a useful validation scenario
  2. Identify where it should live-- core, java, xml or json modules
  3. Review design-time and runtime use cases
  4. Implement validation
  5. Implement unit test

Build failure on a fresh repo

[ERROR] Failed to execute goal on project atlas-java-module: Could not resolve dependencies for project io.atlasmap:atlas-java-module:bundle:1.15.0-SNAPSHOT: Failure to find io.atlasmap:atlas-core:jar:tests:1.15.0-SNAPSHOT in http://maven.restlet.com was cached in the local repository, resolution will not be reattempted until the update interval of maven-restlet has elapsed or updates are forced -> [Help 1]

I tried:

  • mvn clean install
  • mvn clean install -Pfull
  • mvn clean install -DskipTests

I'm using Maven 3.3.9

[GTKA] Add a new Field Action

A Get-To-Know-Atlasmap (GTKA) task.

  1. Select a field action to be implemented (suggest reviewing the competitive list)

  2. Review Field Action design-time requirements

    • Simple or Complex field action
    • If complex, properly implement optional configuration parameters
  3. Review Field Action runtime requirements

  4. Code Field Action and unit test

  5. Create or extend an existing itest that utilizes thew field action

Update Java inspection to use "@" prefix on field members

Java class inspection edge case - field and setter/getter conflict

Scenario:

  1. Java class contains an int field named "myInt" with no getter/setter operating on an Integer/int type
  2. Java class contains methods named String getMyInt()/setMyInt(String myInt)
  3. Need a merge strategy when there are two potential AtlasMap "Fields" that have the same name

Note: An approach could be to use "@" to indicate field vs method

ie..

/Address/@street <-- Java field
/Address/street <-- Java get/set method

Advanced use case:
Extended class implements same field as super class

Result, 2 field definitions:

  • /Address/@street <-- Class
  • /Address/@street?fieldIsSuperClass=true . <-- SuperClass

[Discuss/Design] Audits vs Validations vs Errors

Some definition of terminology:

Validations: The AtlasMap engine and design-time service supports a feature to validate defined mappings are safe for execution.

Audits: The engine supports the ability to track processing for enhanced runtime debugging / instrumentation. This is useful in the event that there are problems or from an operations view there is a desire to see what happened at every step of the mapping.

Errors: These are unplanned errors that occur during runtime. They are implemented as a logging.error and an exception being thrown.

Validation key drivers:

  1. The user interface has a need to be able to inform the user when they are doing something that would cause a problem at runtime.

  2. The runtime engine should check for broad-based issues in order to not have to put contextual validation routines in every step of every process in every data format module.

  3. The support service can validate mappings and return a list of information to the user in order to provide a checklist of items that should be addressed, or can be safely ignored. This is done by running the same validation routes that are used at runtime in order to abort mapping processes before they go too far.

  4. The core engine should check for shared validations. The modules should check for format specific validations. ie.. all Input fields are supported by the defined input module.

ie.. you should not have an InputField of type JavaField in one mapping and another mapping that has XmlField for a given single source mapping or mappings referencing the same docId.

High level examples:

V-1: Mapping contains an Input field but no Output field.
(The UI does not currently allow saving a mapping until this is done. Using this as an example)

V-2: User builds a mapping of Double field to a Short field.
-> Present a "RANGE" validation notification that informs the user that at runtime the data may be too big to fit in the target field.

Audits vs Errors:
(I dare wade into the typed/untyped exceptions pool a bit here.)

We have the ability to catch and set many exceptions as Audits or go ahead and just throw exceptions as they are. I think it would be good to discuss how we'd like to handle this all around and define some sort of Guidelines / Best Practices approach and ensure the code base aligns to those as best it can.

AtlasMap Website

It'd be cool to follow the Syndesis.io approach to create a website for AtlasMap!

Update .equals to .isAssignable in ClassHelper

In the fallback block where we look for a matching getter when finding a setter w/o a known param type, we have an .equals() call and it should be a .isAssignable for wider acceptance

Add logging dependency or split out json handling of atlas-model module

The atlas-model module includes Jackson JsonDeserializer and JsonSerializer classes for prettifying AtlasMapping json definitions to provide type-free, extensible field action support while maintaining a DSL-like syntax in JSON (say that 10x fast).

In doing so, there is no mechanism to output unsupported or type-o'd field action names. For example, if someone has "puppercase" instead of "Uppercase" in the json, we quietly skip over and continue on.

Option 1: Add slf4j dependency to the model class module

Option 2: Break off the ActionsJsonDeserializer, ActionsJsonSerializer, AtlasJsonModule and AtlasJsonMapper classes to a separate module

"outputField" : [ {
"jsonType" : "io.atlasmap.v2.MockField",
"actions" : [ {
"Uppercase" : null
}, {
"Lowercase" : null
}, {
"SubString" : {
"startIndex" : 2,
"endIndex" : 5
}
}, {
"SubStringAfter" : {
"match" : "a",
"startIndex" : 2,
"endIndex" : 5
}
}, {
"SubStringBefore" : {
"match" : "z",
"startIndex" : 2,
"endIndex" : 5
}
} ],
"value" : "map-output-value",
"fieldType" : "STRING",
"name" : "map-output"
} ]

Convert all 'named things' to Source and Target

Naming convention for stuff.. we have a bit of a mix right now. Probably a good idea to settle on one set of terms and align it b/w the UI, services and the engine.

  1. Input & Output
  2. Source & Target

/mavenclasspath endpoint takes too long

When trying to do Twitter Mention -> Salesforce Create/Update Contact, I can see the following exception.

Could not load JAVA document. Document is not found: io.syndesis.connector.salesforce.Contact

screen shot 2017-07-17 at 11 42 12

Remove unneeded / unused MockField and MockModule

Using the MockField and MockModule is redundant when using the JavaField or JavaModule.

For integration/unit testing of FieldActions or other discrete components, rely on JavaField and JavaModule

[Discuss] Handling trimming of strings

There are valid use cases where leading and trailing space should be there and treated as-is. However, that also is an end-user pain point. We probably don't want users to have to specify the Trim() user function on every transformation-- or at least add a mapping-wide configuration short cut to avoid the all-mappings-get-Trim field action.

Options to consider:

  1. UI -> Data Mapper trims() all user entry for Property, LookupTable and Constant values
  2. The DM detects leading and trailing white space during validation
  3. The engine supports configuration option to auto-trim strings

Jackson 2.8.6 issue

Initial testing with Jackson 2.8.6 resulted in the following exception when testing. Keep an eye out when upgrading Jackson to a newer version.

java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonView
at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector.(JacksonAnnotationIntrospector.java:35)
at com.fasterxml.jackson.databind.ObjectMapper.(ObjectMapper.java:283)
at com.mediadriver.atlas.v2.JsonMarshallerTest.setUp(JsonMarshallerTest.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.annotation.JsonView
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 29 more

Need empty v null config flag for all formats

  1. When specifying a mapped field in Xml, an empty element may be interpreted as ""
    ie. The desired behavior of the value may be "" or null
  2. We need a config option in order to tell XmlFieldReader what to do
  3. The issue crops up w/ Xml to Json where the "" fields are being written : { myField: "" }

Pass through character encoding / locale info on data sources.

Character encoding / locale information needs to be added to inspection and mapping.

Add the following two properties:

  • characterEncoding (string)
  • locale (string)

To the following classes:

  • io.atlasmap.v2.Document (json/xml inspection)
  • io.atlasmap.java.v2.JavaClass (java inspection)
  • io.atlasmap.v2.DataSource (mapping data source info pass through)

Please cc me when this is finished so I can test it on the UI.

Related ticket: atlasmap-attic/atlasmap-ui#27

Test failure on freshly checked out repo

Doing a mvn install on freshly cloned atlasmap repo yields:

Results :

Tests in error:
  DateConverterTest.convertFromLong:272 » IllegalArgument java.lang.ArithmeticEx...

Tests run: 343, Failures: 0, Errors: 1, Skipped: 1
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Atlas :: Project Build ............................. SUCCESS [  0.159 s]
[INFO] Atlas :: Parent POM ................................ SUCCESS [  0.471 s]
[INFO] Atlas :: Model ..................................... SUCCESS [  9.165 s]
[INFO] Atlas :: API ....................................... SUCCESS [  0.795 s]
[INFO] Atlas :: Core ...................................... FAILURE [  3.820 s]
[INFO] Atlas :: Mock Parent POM ........................... SKIPPED
[INFO] Atlas :: Mock Model ................................ SKIPPED
[INFO] Atlas :: Mock Module ............................... SKIPPED
[INFO] Atlas :: Java Parent POM ........................... SKIPPED
...

with the following test result

-------------------------------------------------------------------------------
Test set: io.atlasmap.converters.DateConverterTest
-------------------------------------------------------------------------------
Tests run: 32, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.139 sec <<< FAILURE! - in io.atlasmap.converters.DateConverterTest
convertFromLong(io.atlasmap.converters.DateConverterTest)  Time elapsed: 0.007 sec  <<< ERROR!
java.lang.IllegalArgumentException: java.lang.ArithmeticException: long overflow
        at io.atlasmap.converters.DateConverterTest.convertFromLong(DateConverterTest.java:272)
Caused by: java.lang.ArithmeticException: long overflow
        at io.atlasmap.converters.DateConverterTest.convertFromLong(DateConverterTest.java:272)

Update validation services to be generic

Per-module ValidationService checks are a candidate to be generic over *Field class

JsonValidationService extends BaseValidationService {
...
}

The majority of the code can be centralized and shared.

Increate unit test coverage of atlas-core

  • DefaultAtlasCombineStrategy (100%)

  • DefaultAtlasContext

  • DefaultAtlasContextFactory

  • DefaultAtlasConversionService (74%)

  • DefaultAtlasPropertyStrategy (84%)

  • DefaultAtlasSeparateStrategy (100%)

  • DefaultAtlasSession (100%)

  • DefaultAtlasValidationService (88%)

  • StringDelimiter (86%)

  • io.atlasmap.actions (85%)

  • io.atlasmap.converters (99%)

  • io.atlasmap.validators (70%)

Update XmlToXml Tests

  • FlatPrimitive
  • Complex
  • AutoConversion
  • Boxed, unboxed primitives
  • Namespace
  • Non-namespaced

Unit Test fails on master

See build log https://circleci.com/gh/atlasmap/atlasmap/72 , can be reproduced locally, too.

LengthValidatorTest
Running io.atlasmap.validators.StringPatternValidatorTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.118 sec - in io.atlasmap.validators.StringPatternValidatorTest

Results :

Failed tests:
  AtlasUtilTest.testFindClassesForPackage:116 expected:<4> but was:<0>

Tests run: 426, Failures: 1, Errors: 0, Skipped: 2

[Documentation] Field Actions

It would be great if there was a table of all the supported field actions, their parameters and input/output types.

Field Action Input Type Output Type Parameter(s) Description
Capitalize String String n/a Capitalize the first character of a string

[DISCUSS] JO-2 BigInteger and BigDecimal support

Possible use cases:

Modeling BigInteger/BigDecimal is complicated in that many formats don't support the concept of a dynamically sized number. For Xml and Json, we may need to consider converting them to a string if they exceed 64 bit integer size.

id Mapping Supported mapping Notes
BIG-1 BigInteger -> BigInteger Java-to-Java only?
BIG-2 BigInteger -> BigDecimal Java-to-Java only?
BIG-3 BigDecimal -> BigInteger Java-to-Java only?
BIG-4 BigDecimal -> BigDecimal Java-to-Java only?
BIG-5 other number -> BigInteger x-to-Java only?
BIG-6 other non-number -> BigInteger x-to-Java only?
BIG-7 other number -> BigDecimal x-to-Java only?
BIG-8 other non-number -> BigDecimal x-to-Java only?
BIG-9 BigInteger -> other number Java-to-x only? Range check?
BIG-10 BigInteger -> other non-number Java-to-x only? Convert to string?
BIG-11 BigDecimal -> other number Java-to-x only? Range check?
BIG-12 BigDecimal -> other non-number Java-to-x only? Convert to string?

OSGi compatibility tasks

  • Update Class.forName() references to specify class loaders
  • Test installation and bundle wiring in an OSGi runtime (such as Karaf)
  • Write an integration test that confirms data processing in Karaf or other OSGi runtime

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.