The codebase for the narayana project

Overview

Narayana

Website: http://narayana.io

Twitter: https://twitter.com/narayana_io, using twitter handle #narayanaio

Getting help

If you need help with using Narayana, please visit our forums at: https://developer.jboss.org/en/jbosstm/

If you think you have found an error in our code, please raise an issue over on: https://issues.jboss.org/browse/JBTM

If you would like to contribute a pull request to help the project out, please sign our CLA over here: https://cla.jboss.org/index.seam (the project is JBoss Transactions)

If you have a performance optimization that you would like to suggest to us, please read our document over here: https://developer.jboss.org/wiki/PerformanceGatesForAcceptingPerformanceFixesInNarayana

Requirements

To build this project JDK 1.8 (or greater) is required.

When building on Mac OS make sure that JAVA_HOME is set to use JDK 1.8:

export JAVA_HOME=`/usr/libexec/java_home -v 1.8` 

Building Naryana

To build Narayana you should call:

./build.[sh|bat] <maven_goals, default is install>

To build Narayana without running tests you can call:

./build.[sh|bat] -DskipTests

If you are building the "community" profile and are using a different maven installation to the one provided in tools/maven you need to make sure you have the following options:

-Dorson.jar.location=/full/path/to/checkout/location/ext/

The distribution is then available in:

./narayana-full/target/narayana-full-<VERSION>-bin.zip

Alternatively, the uber jar for JacORB is available here:

./ArjunaJTS/narayana-jts-jacorb/target/narayana-jts-jacorb-<VERSION>.jar

The uber jar for the JDK ORB is available here:

./ArjunaJTS/narayana-jts-idlj/target/narayana-jts-idlj-<VERSION>.jar

The user jar for local JTA is here:

./ArjunaJTA/narayana-jta/target/narayana-jta-<VERSION>.jar

If you just need the facilities provided by ArjunaCore:

./ArjunaCore/arjunacore/target/arjunacore-<VERSION>.jar

Building specific components

If you would like to build an individual module (say arjuna) with its dependencies you would type:

./build.[sh|bat] [clean] install -pl :arjuna -am

Other interesting specific components can be built using:

ArjunaCore: ./build.[sh|bat] -am -pl :arjunacore

NarayanaJTA: ./build.[sh|bat] -am -pl :narayana-jta

NarayanaJTS (jacorb): ./build.[sh|bat] -am -pl :narayana-jts-jacorb -Didlj-disabled=true

NarayanaJTS (idlj): ./build.[sh|bat] -am -pl :narayana-jts-idlj -Djacorb-disabled=true

NarayanaJTS (ibmorb): ./build.[sh|bat] -am -pl :narayana-jts-ibmorb -Dibmorb-enabled=true (requires IBM jdk)

XTS: ./build.[sh|bat] -am -pl :jboss-xts

STM: ./build.[sh|bat] -am -pl :stm

LRA: ./build.[sh|bat] -am -f rts/lra

Testing Narayana

There are three types of tests in the Narayana repository.

  • Unit tests which are run with maven surefire and they do not need any special setup. Unit tests are run automatically when Narayana is build and if it's not specified otherwise (e.g. with maven flag -DskipTests)

  • Integration tests are run with maven surefire or maven failsafe. They are run with use of the Arquillian and you need to explicitly enable them by activating profile arq (maven flag -Parq). There is a difficulty that each module have different requirements for the integration tests to be run. Most of them requires environmental variable JBOSS_HOME to be defined and points to an existing directory of WildFly. But some of them requires additional steps for WildFly being configured. The best way to find out details is to check the narayana.sh script which is used to run CI tests.

  • Integration qa suite resides in the directory qa/ and contains form of integration tests. These are built but not run automatically. See qa/README.txt for usage. In brevity launching tests is about running commands:

    cd qa/
    ant -Ddriver.url=file:///home/hudson/dbdrivers get.drivers dist
    ant -f run-tests.xml ci-tests
    

Code Coverage Testing

  ./build.[sh|bat] -PcodeCoverage (the output is in ${project.build.directory}/coverage.html)

Checkstyle

Narayana expect usage of the style of code defined by WildFly checkstyle (maven artifact org.wildfly.checkstyle:wildfly-checkstyle-config).

Because of historical reasons the checkstyle is applied only at newly developed Narayana modules. The old ones are left without strict code style rules. There is only a recommendation to follow code style used in the particular file you edit.

Checkstyle checking is bound to maven install phase and if the file does not comply with the defined rules the compilation fails.

To get your developer life easier use the checkstyle plugins for your IDE

The WildFly provides a formatter complying with the checkstyle rules. If interested check the IDE configs at project wildfly-core.

Now The Gory Details.

Each module contains a set of maven build scripts, which chiefly just inherits and selectively overrides the parent pom.xml Understanding this approach requires some knowledge of maven's inheritance.

Top level maven builds always start from scratch. Individual module builds on the other hand are incremental, such that you may rebuild a single module by traversing into its directory and running 'mvn', but only if you have first built any pre-req modules e.g. via a parent build.

In addition to driving the build of individual modules, the build files in the bundles directories (ArjunaCore, ArjunaJTA, ArjunaJTS) contain steps to assemble the release directory structure, including docs, scripts, config files and other ancillaries. These call each other in some cases, as JTS is largely a superset of JTA and JTA in turn a superset of Core.

3rd party dependency management is done via maven. Note that versions of most 3rd party components are resolved via the JBossAS component-matrix pom.xml, even when building standalone releases. The version of JBossAS to use is determined by the top level pom.xml You may need to set up maven to use the jboss.org repositories: http://community.jboss.org/wiki/MavenGettingStarted-Users

Maven is provided in the tools/maven section, though later versions of this may work. Download locations are: http://www.oracle.com/technetwork/java/javase/downloads/index.html http://maven.apache.org/

Comments
  • Update to test against WildFly 26.x

    Update to test against WildFly 26.x

    Use WildFly 26.x for testing

    • AS_TESTS is not currently working
    • Add these back and also test with JDK 17 once AS_TESTS on JDK 11 is working: !CORE !RTS !LRA !XTS !JACOCO

    Not relevant: !TOMCAT !QA_JTA !QA_JTS_OPENJDKORB !PERF !DB_TESTS mysql db2 postgres oracle

    Hold 
    opened by tomjenkinson 501
  • JBTM-3482:Build Narayana using JDK 17

    JBTM-3482:Build Narayana using JDK 17

    https://issues.redhat.com/browse/JBTM-3482

    !JDK8 JDK17

    !CORE !TOMCAT !AS_TESTS !RTS !JACOCO !XTS !QA_JTA !QA_JTS_JACORB !QA_JTS_JDKORB !QA_JTS_OPENJDKORB !PERF !LRA !DB_TESTS !mysql !db2 !postgres !oracle

    opened by mayankkunwar 401
  • JBTM-3590 Remove support for Java versions below SE 11 and upgrade quarkus dependency version

    JBTM-3590 Remove support for Java versions below SE 11 and upgrade quarkus dependency version

    https://issues.redhat.com/browse/JBTM-3590

    JDK11 !JDK8

    CORE TOMCAT AS_TESTS RTS JACOCO XTS QA_JTA QA_JTS_JACORB QA_JTS_JDKORB QA_JTS_OPENJDKORB PERF LRA DB_TESTS mysql db2 postgres oracle

    opened by tomjenkinson 396
  • [JBTM-3588] Native support for Jakarta Transactions

    [JBTM-3588] Native support for Jakarta Transactions

    https://issues.redhat.com/browse/JBTM-3588

    This PR goal is to add to narayana project native support for Jakarta EE transactions. More information in commits messages.

    Note: osgi-narayana module has been removed Using wildfly from PR: https://github.com/jbosstm/jboss-as/pull/89

    CORE TOMCAT AS_TESTS RTS JACOCO XTS QA_JTA QA_JTS_OPENJDKORB PERF LRA DB_TESTS mysql db2 postgres oracle JDK17

    NoCI 
    opened by marcosgopen 370
  • JBTM-3482 JDK 17 work

    JBTM-3482 JDK 17 work

    https://issues.redhat.com/browse/JBTM-3482

    JDK17 !JDK11

    Follows up on https://github.com/jbosstm/narayana/pull/1935

    FYI https://github.com/jbosstm/narayana/pull/1972 was merged first which removed JDK 8 and changed SE 11 handling

    !CORE !TOMCAT !AS_TESTS !RTS !JACOCO !XTS !QA_JTA !QA_JTS_JDKORB !QA_JTS_JACORB !QA_JTS_OPENJDKORB !PERF !LRA !DB_TESTS mysql db2 postgres oracle

    opened by tomjenkinson 272
  • JBTM-2685 Support JDK9

    JBTM-2685 Support JDK9

    The Tomcat test is disable due to ARQ-2191 The OSGi test is disable due to KARAF-3518 The QA_JTA_OPENJDK is disable due to WFLY-9569 javadoc disable due to JBTM-3057 !TOMCAT !JACOCO

    NoCI 
    opened by zhfeng 242
  • [JBTM-3106][WFLY-11858] Fire appropriate scope events for TransactionScoped scope. Remove bean for InitialContext.

    [JBTM-3106][WFLY-11858] Fire appropriate scope events for TransactionScoped scope. Remove bean for InitialContext.

    Signed-off-by: Laird Nelson [email protected]

    This pull request:

    1. Corrects a few generics issues in TransactionContext
    2. Introduces the DelegatingTransactionManager abstract class
    3. Introduces the NarayanaTransactionManager concrete class that extends from DelegatingTransactionManager
      1. This class fires @Initialized(TransactionScoped.class) from its begin() method
      2. This class fires @Destroyed(TransactionScoped.class) from its commit() and rollback() methods
    4. Moves JNDI detection logic from TransactionExtension into NarayanaTransactionManager

    The original forum discussion behind all this is here: https://developer.jboss.org/thread/279595

    https://issues.jboss.org/browse/JBTM-3106 https://issues.jboss.org/browse/WFLY-11858

    Requires: https://github.com/jbosstm/jboss-as/pull/80

    !QA_JTA !QA_JTS_JDKORB !QA_JTS_OPENJDKORB !QA_JTS_JACORB !BLACKTIE !XTS PERF NO_WIN !RTS !TOMCAT !JACOCO !LRA

    opened by ljnelson 194
  • JBTM-3482:Build Narayana using JDK 17

    JBTM-3482:Build Narayana using JDK 17

    https://issues.redhat.com/browse/JBTM-3482

    A rebase of https://github.com/jbosstm/narayana/pull/1935 and added in some JDK 11 related things

    !JDK8 JDK17

    CORE TOMCAT AS_TESTS RTS JACOCO XTS QA_JTA QA_JTS_JACORB QA_JTS_JDKORB QA_JTS_OPENJDKORB PERF !LRA !DB_TESTS mysql db2 postgres oracle

    Hold 
    opened by tomjenkinson 121
  • 5.9

    5.9

    Thanks for submitting your Pull Request!

    Please make sure your PR meets the following requirements:

    • [ ] Pull Request title is properly formatted: JBTM-XYZ Subject
    • [ ] Pull Request contains link to the JIRA issue(s)

    The build axis can be controlled by prefixing a ! on the following as appropriate.

    MAIN TOMCAT AS_TESTS RTS JACOCO XTS QA_JTA QA_JTS_JACORB QA_JTS_JDKORB QA_JTS_OPENJDKORB BLACKTIE !PERF LRA NO_WIN !DB_TESTS mysql db2 postgres oracle

    opened by tomjenkinson 111
  • JBTM-3624 JBTM-3626 JacORB (and don't provide OpenJDK to JacORB compiler classpath JBTM-3590)

    JBTM-3624 JBTM-3626 JacORB (and don't provide OpenJDK to JacORB compiler classpath JBTM-3590)

    Consolidate the versions of JacORB: https://issues.redhat.com/browse/JBTM-3624

    CORE !TOMCAT !AS_TESTS !RTS !JACOCO !XTS !QA_JTA !QA_JTS_JACORB !QA_JTS_JDKORB !QA_JTS_OPENJDKORB !PERF !LRA !DB_TESTS mysql db2 postgres oracle

    Also includes a commit to deal with modular.jdk.args which should no longer be required since https://issues.redhat.com/browse/JBTM-3590 but the way I changed it also changes QA_JTS_JDKORB QA_JTS_OPENJDKORB. That change should be tested here and https://github.com/jbosstm/narayana/pull/1995

    Hold 
    opened by tomjenkinson 104
  • JBTM-3517 Collection.isEmpty() should be used to test for emptiness

    JBTM-3517 Collection.isEmpty() should be used to test for emptiness

    Issue: https://issues.redhat.com/browse/JBTM-3517

    PERF !MAIN !CORE !RTS !LRA !TOMCAT !AS_TESTS !JACOCO !XTS !QA_JTA !QA_JTS_JACORB !QA_JTS_JDKORB !QA_JTS_OPENJDKORB NO_WIN !DB_TESTS !mysql !db2 !postgres !oracle

    opened by RanabirChakraborty 100
  • [JBTM-3673] Removed maven profile jdk17 and updated Arquillian dependencies

    [JBTM-3673] Removed maven profile jdk17 and updated Arquillian dependencies

    Addresses JBTM-3673

    To test: JDK17 LRA AS_TESTS RTS

    Passed !XTS !JACOCO !JDK11 !CORE !TOMCAT !QA_JTA !QA_JTS_OPENJDKORB PERF !DB_TESTS !mysql !db2 !postgres !oracle

    NoCI 
    opened by jmfinelli 89
Releases(5.12.4.Final)
Sonatype Nexus Repository Open Source Codebase

Builds use Apache Maven and require Java 8. Apache Maven wrapper scripts are included in the source tree.

Sonatype 1.3k Jan 5, 2023
An open source codebase for sharing programming solutions.

Codinasion An open source codebase for sharing programming blogs and solutions. This repository contains the Markdown source files for codinasion.web.

Codinasion 0 Jan 2, 2023
An open source codebase for sharing programming solutions.

Codinasion An open source codebase for sharing programming blogs and solutions. This repository contains the Markdown source files for codinasion.web.

Codinasion 61 Oct 7, 2022
Codebase for talk on Spring I/O 2022 in Barcelona about Spring for Apache Kafka

Spring I/O Barcelona 2022 - Spring Kafka beyond the basics Codebase for my talk on Spring I/O 2022 in Barcelona about Spring for Apache Kafka Slides P

Tim van Baarsen 18 Dec 24, 2022
An assistance platform made using Spring framework that analyses your code, and helps you either to start a devops project, or to turn an existing project into a devops project using open source software (Git, Docker, Jenkins..)

DevOpsify Description An assistance platform made using Spring framework that analyses your code, and helps you either to start a devops project, or t

obaydah bouifadene 14 Nov 8, 2022
JVM version of Pact. Enables consumer driven contract testing, providing a mock service and DSL for the consumer project, and interaction playback and verification for the service provider project.

pact-jvm JVM implementation of the consumer driven contract library pact. From the Ruby Pact website: Define a pact between service consumers and prov

Pact Foundation 962 Dec 31, 2022
This open source project allows you to easily integrate Camunda's External Task Clients into Micronaut projects: simply add a dependency in your Micronaut project

micronaut-camunda-external-client This open source project allows you to easily integrate Camunda 's External Task Clients into Micronaut projects. Mi

Novatec Consulting GmbH 19 Dec 18, 2022
The project aim at easier to start a spring boot/cloud project.

easy-starters 是一个公共 starter 集合,旨在帮助 java 开发者快速构建 Springboot 与 Spring Cloud 项目. lx-starters的环境要求 JDK requirement: JDK 1.8+ Spring booter 2.x,+ 如何引用lx-s

null 3 Jul 11, 2022
Zero is a core test automation project that can be used as a basis for any kind of test automation project (API, Browser, Mobile)

Zero Zero is our feature rich, core test automation framework, that can be used as an underlying automation framework for any/and all kind of test aut

Pramod Kumar Yadav 10 Dec 16, 2022
This project is an Android Studio plugin version of BlackObfuscator, it supports obfuscating code automatically. More information about this project are in BlackObfuscator.

DEX控制流混淆插件版 · BlackObfuscator-ASPlugin English Version 本项目为 BlackObfuscator 的Android Studio插件版,支持打包自动化混淆。功能及介绍方面请查看 BlackObfuscator 源项目 注意事项 首要注意:Blac

null 229 Dec 31, 2022
This project provides an advanced baseline to help you kick start a Spring project.

?? Advanced Spring Scaffold The Spring Framework is an application framework and inversion of control container for the Java platform. This project wa

André de Sousa 22 Oct 15, 2022
This is a Selenium test project for the Champlain PetClinic project

champlain_petclinic_selenium This is a Selenium test project for the Champlain PetClinic project Selenium Login Test Helper class info With the additi

null 3 Oct 31, 2021
A project to cause (controlled) destruction on your jvm application

Perses Cause (controlled) destruction to your jvm application Perses (Ancient Greek: Πέρσης) was the Titan god of destruction. His name is derived fro

Nikolaos Kanakis 62 Dec 27, 2022
Main Portal page for the Jackson project

Jackson Project Home @github This is the home page of the Jackson Project. What is New? Oct 1, 2020: Jackson participates in Hacktoberfest2020 and we

FasterXML, LLC 7.9k Jan 2, 2023
Eclipse Yasson project

Eclipse Yasson Yasson is a Java framework which provides a standard binding layer between Java classes and JSON documents. This is similar to what JAX

Eclipse EE4J 183 Aug 31, 2022
GWT Open Source Project

GWT GWT is the official open source project for GWT releases 2.5 and onwards. In this document you have some quick instructions to build the SDK from

GWT 1.4k Jan 5, 2023
HornetQ is an open source project to build a multi-protocol, embeddable, very high performance, clustered, asynchronous messaging system.

HornetQ If you need information about the HornetQ project please go to http://community.jboss.org/wiki/HornetQ http://www.jboss.org/hornetq/ This file

HornetQ 245 Dec 3, 2022