These slides show how to use type-safe mechanisms provided by MyFaces CODI for developing JSF applications which are more type-safe and easier to maintain.
http://2012.con-fess.com/sessions/-/details/136/MyFaces-CODI-and-JBoss-Seam3-become-Apache-DeltaSpike is the next part with more details about MyFaces CODI and Apache DeltaSpike at
MyFaces CODI and JBoss Seam3 become Apache DeltaSpikeos890
These slides show how to use type-safe mechanisms provided by MyFaces CODI for developing JSF applications which are more type-safe and easier to maintain as well as common pitfalls. Beyond that there is an basic overview of Apache DeltaSpike.
CDI portable extensions are one of greatest features of Java EE allowing the platform to be extended in a clean and portable way. But allowing extension is just part of the story. CDI opens the door to a whole new eco-system for Java EE, but it’s not the role of the specification to create these extensions.
Apache DeltaSpike is the project that leads this brand new eco-system by providing useful extension modules for CDI applications as well as tools to ease the creation of new ones.
In this session, we’ll start by presenting the DeltaSpike toolbox and show how it helps you to develop for CDI. Then we’ll describe the major extensions included in DeltaSpike, including 'configuration', 'scheduling' and 'data'.
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDIMario-Leander Reimer
This talk is a detailed case study about the migration of a JSF-based web application from Spring 3 to Java EE 7 and CDI. It is presented at the JavaOne 2014 conference.
At first sight this didn’t seem to be too difficult. Both technologies are based on similar concepts and provide similar mechanisms for dependency injection (DI). So migrating pure annotation based bean wiring from Spring to CDI was obvious and straight forward.
But the deeper we looked into the source code the more Spring specific code we found with no direct and easy mapping in neither of JEE7, EJB3 or CDI available. Some of the problems and challenges we were confronted with were:
- How to migrate XML based bean wirings?
- How to migrate FactoryBeans?
- How to migrate AspectJ based AOP proxies?
- How to implement Spring profiles for environment based wiring?
- How to implement custom bean scopes?
- How to implement custom Spring XML schema notations and wiring?
- How to migrate code that is built against Spring APIs?
- How to migrate unit test based on Spring Test?
To answer these questions the talk will present the patterns and strategies used to map, transform and migrate the different concepts from Spring 3 to JEE7with CDI. The talk will discuss the changes and implications of the migration on the system’s architecture.
The new GraalVM from Oracle supports multiple language including JavaScript, Python, Ruby, R, C++ as well as Java and other JVM languages. This opens up interesting possibilities for polygot enterprise applications. Now you can use a Node library in a Java application or call an R statistical function from an EJB. Previously, this type of integration was extremely challenging. This session will provide recipes to get up and running along with best practices and some cool demos.
Code: https://github.com/rcuprak/graalvm_jee
MyFaces CODI and JBoss Seam3 become Apache DeltaSpikeos890
These slides show how to use type-safe mechanisms provided by MyFaces CODI for developing JSF applications which are more type-safe and easier to maintain as well as common pitfalls. Beyond that there is an basic overview of Apache DeltaSpike.
CDI portable extensions are one of greatest features of Java EE allowing the platform to be extended in a clean and portable way. But allowing extension is just part of the story. CDI opens the door to a whole new eco-system for Java EE, but it’s not the role of the specification to create these extensions.
Apache DeltaSpike is the project that leads this brand new eco-system by providing useful extension modules for CDI applications as well as tools to ease the creation of new ones.
In this session, we’ll start by presenting the DeltaSpike toolbox and show how it helps you to develop for CDI. Then we’ll describe the major extensions included in DeltaSpike, including 'configuration', 'scheduling' and 'data'.
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDIMario-Leander Reimer
This talk is a detailed case study about the migration of a JSF-based web application from Spring 3 to Java EE 7 and CDI. It is presented at the JavaOne 2014 conference.
At first sight this didn’t seem to be too difficult. Both technologies are based on similar concepts and provide similar mechanisms for dependency injection (DI). So migrating pure annotation based bean wiring from Spring to CDI was obvious and straight forward.
But the deeper we looked into the source code the more Spring specific code we found with no direct and easy mapping in neither of JEE7, EJB3 or CDI available. Some of the problems and challenges we were confronted with were:
- How to migrate XML based bean wirings?
- How to migrate FactoryBeans?
- How to migrate AspectJ based AOP proxies?
- How to implement Spring profiles for environment based wiring?
- How to implement custom bean scopes?
- How to implement custom Spring XML schema notations and wiring?
- How to migrate code that is built against Spring APIs?
- How to migrate unit test based on Spring Test?
To answer these questions the talk will present the patterns and strategies used to map, transform and migrate the different concepts from Spring 3 to JEE7with CDI. The talk will discuss the changes and implications of the migration on the system’s architecture.
The new GraalVM from Oracle supports multiple language including JavaScript, Python, Ruby, R, C++ as well as Java and other JVM languages. This opens up interesting possibilities for polygot enterprise applications. Now you can use a Node library in a Java application or call an R statistical function from an EJB. Previously, this type of integration was extremely challenging. This session will provide recipes to get up and running along with best practices and some cool demos.
Code: https://github.com/rcuprak/graalvm_jee
In this Presentation, we have provided step by step Installation guide and error free solution for developers which helps in time efficient and user friendly installation of theme in Liferay 7.
Java EE 8 Presentation given at NYC Java SIG on May 4, 2017. This presentation provides the latest information on the forthcoming release of Java EE 8 in June.
Node.js Development with Apache NetBeansRyan Cuprak
This session covers the basics of developing Node.js applications with NetBeans. NetBeans includes fully integrated support for both JavaScript and Node.js. You’ll get a tour of the features and learn how NetBeans can accelerate your projects. The presentation looks at basic code editing capabilities provided by the IDE, tool integration (npm/Grunt/Bower/Webpack), frameworks such as Express, and debugging capabilities. You’ll see why NetBeans is the best free JavaScript/Node.js IDE.
A (very) quick introduction to OSGi for Java developers. These slides are meant to be a quick overview of the technology and make you understand how useful it can be.
Open Services Gateway Initiative (OSGI)Peter R. Egli
OSGi is a component-based technology and was developed to provide a software platform that allows modularization and dynamic linking of application components.
OSGi components are called bundles and can be exported and imported by application bundles.
OSGi implementations like Apache Felix or Eclipse Equinox provide a runtime container which controls the lifecycle of bundles.
Even though OSGi is hardware independent, it is based on the Java Virtual Machine and as such extends the concepts of the underlying Java language.
An OSGi bundle's capabilities and properties are defined in a manifest file that is packed together with the bundle's Java class files. The manifest file allows compatibility checks by the OSGi runtime between the exporting bundle and the importing bundle.
This export and import mechanism allows highly flexible and dynamic application environments where applications and components are installed, linked and started at runtime without the need to restart the entire system.
The talk is introduction to OSGi specification and its implementations. It summarizes corner stones of OSGi (bundles, services, components) and describes a technical background of OSGi implementations on a simple example.
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application DevelopmentSanjeeb Sahoo
These slides were used during our presentation at JavaONE 2010 [1]. They talk about use of OSGi in Java EE applications.
[1] http://www.eventreg.com/cc250/sessionDetail.jsp?SID=313521
OSGi has gained popularity over the last two years. The platform has some very interesting features like versioning, dynamic updates and it's service oriented nature. These characteristics however come with a price. A firm understanding of how and why OSGi works how it works, is a necessity if you plan on getting into OSGi.
This talk will start with some basic principals on the java platform and will gradually move towards the OSGi infrastructure explaining the OSGi fundamentals. The following topics will be covered:
* Classloading in OSGi
* Lifecycle management of OSGi bundles
* OSGi Service, the service registry and service composition models
Afterwards, we will explain the generally accepted best practices and OSGi design patterns.
A flash lecture given at the JJTV Tool Night #4 on 6 November, 2012.
The full lecture video (in Hebrew) can be found at http://www.youtube.com/watch?v=ozl6oBmAj1Y
CDI portable extensions are one of greatest features of Java EE allowing the platform to be extended in a clean and portable way. But allowing extension is just part of the story. CDI opens the door to a whole new eco-system for Java EE, but it’s not the role of the specification to create these extensions.
Apache DeltaSpike is the project that leads this brand new eco-system by providing useful extension modules for CDI applications as well as tools to ease the creation of new ones.
In this session, we’ll start by presenting the DeltaSpike toolbox and show how it helps you to develop for CDI. Then we’ll describe the major extensions included in Deltaspike, including 'configuration', 'scheduling' and 'data'.
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyMark Proctor
This is an overview video that shows the scope of work and technology used within the Red Hat JBoss BRMS and BPMS platforms.
The technology presented builds with GWT, Errai and UberFire as the foundation. Over 2015 we'll be working to make it for end users to consume the bits they need, paying for only what they use, so others can make power web platforms like BRMS and BPMS.
In this Presentation, we have provided step by step Installation guide and error free solution for developers which helps in time efficient and user friendly installation of theme in Liferay 7.
Java EE 8 Presentation given at NYC Java SIG on May 4, 2017. This presentation provides the latest information on the forthcoming release of Java EE 8 in June.
Node.js Development with Apache NetBeansRyan Cuprak
This session covers the basics of developing Node.js applications with NetBeans. NetBeans includes fully integrated support for both JavaScript and Node.js. You’ll get a tour of the features and learn how NetBeans can accelerate your projects. The presentation looks at basic code editing capabilities provided by the IDE, tool integration (npm/Grunt/Bower/Webpack), frameworks such as Express, and debugging capabilities. You’ll see why NetBeans is the best free JavaScript/Node.js IDE.
A (very) quick introduction to OSGi for Java developers. These slides are meant to be a quick overview of the technology and make you understand how useful it can be.
Open Services Gateway Initiative (OSGI)Peter R. Egli
OSGi is a component-based technology and was developed to provide a software platform that allows modularization and dynamic linking of application components.
OSGi components are called bundles and can be exported and imported by application bundles.
OSGi implementations like Apache Felix or Eclipse Equinox provide a runtime container which controls the lifecycle of bundles.
Even though OSGi is hardware independent, it is based on the Java Virtual Machine and as such extends the concepts of the underlying Java language.
An OSGi bundle's capabilities and properties are defined in a manifest file that is packed together with the bundle's Java class files. The manifest file allows compatibility checks by the OSGi runtime between the exporting bundle and the importing bundle.
This export and import mechanism allows highly flexible and dynamic application environments where applications and components are installed, linked and started at runtime without the need to restart the entire system.
The talk is introduction to OSGi specification and its implementations. It summarizes corner stones of OSGi (bundles, services, components) and describes a technical background of OSGi implementations on a simple example.
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application DevelopmentSanjeeb Sahoo
These slides were used during our presentation at JavaONE 2010 [1]. They talk about use of OSGi in Java EE applications.
[1] http://www.eventreg.com/cc250/sessionDetail.jsp?SID=313521
OSGi has gained popularity over the last two years. The platform has some very interesting features like versioning, dynamic updates and it's service oriented nature. These characteristics however come with a price. A firm understanding of how and why OSGi works how it works, is a necessity if you plan on getting into OSGi.
This talk will start with some basic principals on the java platform and will gradually move towards the OSGi infrastructure explaining the OSGi fundamentals. The following topics will be covered:
* Classloading in OSGi
* Lifecycle management of OSGi bundles
* OSGi Service, the service registry and service composition models
Afterwards, we will explain the generally accepted best practices and OSGi design patterns.
A flash lecture given at the JJTV Tool Night #4 on 6 November, 2012.
The full lecture video (in Hebrew) can be found at http://www.youtube.com/watch?v=ozl6oBmAj1Y
CDI portable extensions are one of greatest features of Java EE allowing the platform to be extended in a clean and portable way. But allowing extension is just part of the story. CDI opens the door to a whole new eco-system for Java EE, but it’s not the role of the specification to create these extensions.
Apache DeltaSpike is the project that leads this brand new eco-system by providing useful extension modules for CDI applications as well as tools to ease the creation of new ones.
In this session, we’ll start by presenting the DeltaSpike toolbox and show how it helps you to develop for CDI. Then we’ll describe the major extensions included in Deltaspike, including 'configuration', 'scheduling' and 'data'.
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyMark Proctor
This is an overview video that shows the scope of work and technology used within the Red Hat JBoss BRMS and BPMS platforms.
The technology presented builds with GWT, Errai and UberFire as the foundation. Over 2015 we'll be working to make it for end users to consume the bits they need, paying for only what they use, so others can make power web platforms like BRMS and BPMS.
First lecture in the Java EE training course.
Covers:
- Java EE project setup
- Introduction to Maven
- Web application structure
- JSF basics
- CDI basics
SOLID Programming with Portable Class LibrariesVagif Abilov
Developers often don't pay attention to code portability until they need to target multiple platforms. However, large amount of non-portable code often hints about violation of clean code principles, so it is worth investigating which part of the source code base are platform-specific and for what reasons.
In this session we will give an overview of portable class libraries, show how to extract PCL components from a real-world application and go through typical challenges that are faced when writing portable code. We will present the original tool that analyzes assemblies for portability compliance and can be used as a guard to prevent mixing business logic with infrastructure-specific functionality. Finally we will demonstrate how PCLs help targeting platforms such as Windows Store, Android and iOS.
An interactive Liferay (DXP) 7 Tech Meet up was codified by Azilen Technologies on 18th March, 2017 at Ahmedabad Management Association.
Those who have missed the direct confrontation can explore few of the knowledge elements here in the Presentation.
Eclipse plug-in development seminar held by the Bulgarian Java User group covering basic aspects of Eclipse plug-in development and the new stuff in e4
MVC 6 - the new unified Web programming modelAlex Thissen
Presentation for Dutch Microsoft TechDays 2015:
With ASP.NET 5 comes MVC 6 with a programming model that unifies Web Pages, MVC and Web API. Each of these has been rebuilt to reflect Microsoft's vision of lean and composable web applications. In this session you will see the changes that have been made to the programming model. We will cover topics such as the new POCO controllers, View Components, dependency injection and much more. Plus, you are going to see the significant changes to the ASP.NET runtime on which MVC 6 is built.
This is my presentation about CFWheels at CFObjective ANZ, November 2010, Melbourne, Australia.
ColdFusion on Wheels (CFWheels), is an elegant framework inspired by Ruby on Rails.
How to help your editor love your vue component libraryPiotr Tomiak
For web developers, one of the best things about Vue is its flexibility. Various ways to develop components, powerful mixins, and the freedom to choose a build system are just some of the advantages of Vue.
In this talk I'll look at Vue component libraries from our perspective as IDE developers and discuss some challenges we're facing with such flexibility. How to find all the available components in a library? What types their props have? Where are the docs? These are just some of the questions we have to answer.
Finally, I'll tell the story of how we ended up creating web-types, a format for describing component libraries. I'll demonstrate how it can help editors and documentation generators and how to use it.
Ein Standard für metadatenbasierte Validierung in allen Layern einer Applikation. Mit diesem Versprechen geht der neue Bean-Validation Standard, auch bekannt als JSR 303, ins Rennen. Von der Wiederverwendbarkeit von bestehenden Constraints zum einfacheren Aufbau eigener Constraints bis hin zur Validierung von Objektgraphen bietet diese Spezifikation einige Mechanismen für metadatenbasierte Validierungen. In einer Feature Tour werden die zentralen Bestandteile der Spezifikation vorgestellt.
In einem zweiten Teil wird die Nutzung von metadatenbasierter Validierung in JEE-Webapplikationen gezeigt. Anhand von kurzen Beispielen wird die Rolle von MyFaces Extensions Validator (aka MyFaces ExtVal) bei der Integration von JSR 303 in JSF-Applikationen veranschaulicht.
These slides introduce MyFaces Extensions Validator. This first part is a short overview. To get more details about MyFaces Extensions Validator we also offer slides with all important details. Do not hesitate to contact us!
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Welocme to ViralQR, your best QR code generator.ViralQR
Welcome to ViralQR, your best QR code generator available on the market!
At ViralQR, we design static and dynamic QR codes. Our mission is to make business operations easier and customer engagement more powerful through the use of QR technology. Be it a small-scale business or a huge enterprise, our easy-to-use platform provides multiple choices that can be tailored according to your company's branding and marketing strategies.
Our Vision
We are here to make the process of creating QR codes easy and smooth, thus enhancing customer interaction and making business more fluid. We very strongly believe in the ability of QR codes to change the world for businesses in their interaction with customers and are set on making that technology accessible and usable far and wide.
Our Achievements
Ever since its inception, we have successfully served many clients by offering QR codes in their marketing, service delivery, and collection of feedback across various industries. Our platform has been recognized for its ease of use and amazing features, which helped a business to make QR codes.
Our Services
At ViralQR, here is a comprehensive suite of services that caters to your very needs:
Static QR Codes: Create free static QR codes. These QR codes are able to store significant information such as URLs, vCards, plain text, emails and SMS, Wi-Fi credentials, and Bitcoin addresses.
Dynamic QR codes: These also have all the advanced features but are subscription-based. They can directly link to PDF files, images, micro-landing pages, social accounts, review forms, business pages, and applications. In addition, they can be branded with CTAs, frames, patterns, colors, and logos to enhance your branding.
Pricing and Packages
Additionally, there is a 14-day free offer to ViralQR, which is an exceptional opportunity for new users to take a feel of this platform. One can easily subscribe from there and experience the full dynamic of using QR codes. The subscription plans are not only meant for business; they are priced very flexibly so that literally every business could afford to benefit from our service.
Why choose us?
ViralQR will provide services for marketing, advertising, catering, retail, and the like. The QR codes can be posted on fliers, packaging, merchandise, and banners, as well as to substitute for cash and cards in a restaurant or coffee shop. With QR codes integrated into your business, improve customer engagement and streamline operations.
Comprehensive Analytics
Subscribers of ViralQR receive detailed analytics and tracking tools in light of having a view of the core values of QR code performance. Our analytics dashboard shows aggregate views and unique views, as well as detailed information about each impression, including time, device, browser, and estimated location by city and country.
So, thank you for choosing ViralQR; we have an offer of nothing but the best in terms of QR code services to meet business diversity!
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
3. Agenda
• Type-safety
• CODI in a Nutshell
• CODI Setup
• CODI Core
• CODI JSF-Module
• CODI Message-Module
• CODI JPA-Module
• CODI Bean-Validation
• CODI Scripting-Module
• Integration and Unit Tests with CODI
4. Type-safety - Why should we care about it?
• Allows to use std. IDE features like auto-completion
• Specialized IDE support is always behind
• No Typos
• Several features allow compile-time or at least startup checks
• Easier for new developers to find usages
• Easier refactorings
• Easier maintenance
• …
5. MyFaces CODI - Overview
• MyFaces Extensions CDI aka MyFaces CODI is a
portable CDI extension which can be used with
Apache OpenWebBeans, JBoss Weld,… and
in combination with other portable CDI extensions
• CODI-Core is required in any case
• Modules
– JSF Module (for 1.2 and 2.0 and 2.1)
– JPA Module
– BV Module
– I18n-Message Module
– Scripting Module
– Test Support Modules
6. MyFaces CODI in a Nutshell
• JSF 1.2 and 2.x • Type-safe View-Configs
• Type-safety • Type-safe Navigation
• Extensibility • JPA Integration
• Advanced Scopes • Dependency Injection
• Various Events Support for BV
• View-Controller • Advanced I18n
• JSF 2 Scope Mappings • Scripting Integration
• And more!
8. Getting CODI up and running
• Add CODI to the project
– With Maven
• Add the modules (or the all-in-one package) to the POM
– Without Maven
• Download the current dist package
• Add the modules (or the all-in-one package) to the Classpath of
the project
• Start using it!
9. Getting CODI up and running - Hints
• With JEE 5 and Mojarra use the controlled bootstrapping
add-on
• Attention (hint for all bean archives):
Ensure that the libs aren’t duplicated – otherwise the CDI
implementation will blame ambiguous interceptors, beans,…
11. Startup*
• Startup-Observer for the StartupEvent
Triggered after the environment is initialized
– Initialization tasks which need an up and running environment
– Easy logging that the module was started
protected void logModuleStart(
@Observes StartupEvent startupEvent) {
...
}
• StartupEventBroadcaster
Allows to integrate custom broadcasting mechanisms before
the first mechanism of CODI gets called
12. ProjectStage and ProjectStageActivated
• Configure beans for a special project-stage in a type-safe way
• Examples
– Sample data
– Debug Phase-Listener
@ProjectStageActivated(
ProjectStage.Development.class)
public class SampleDataStartupObserver {
protected void createSampleData(
@Observes StartupEvent startupEvent,
UserRepository userRepository) {
//...
userRepository.save(user);
}
}
13. Custom Project-Stages - 1
public class ProjectStages
implements ProjectStageHolder {
@Typed() //no bean!
public static final class CustomProjectStage
extends ProjectStage {}
public static final CustomProjectStage
CustomProjectStage =
new CustomProjectStage();
}
+ Service-Loader config
14. Custom Project-Stages - 2
• Configure the project-stage like std. CODI project stages
– JSF std. project stage
– org.apache.myfaces.extensions.cdi.ProjectStage
– ConfiguredValueResolver
• Injecting the current project-stage
@Inject private ProjectStage projectStage;
• Compare the injected value
ProjectStage.Development.equals(this.projectStage)
• Overrule the current project-stage manually
ProjectStageProducer.setProjectStage(
ProjectStages.CustomProjectStage)
15. [CODI-Hint] Deactivatable
• CDI allows deactivation via a veto-mechanism
• Won‘t work for artifacts which aren‘t managed by CDI
• CODI allows do deactivate such implementations which
implement Deactivatable
• Deactivating classes via an implementation of
ClassDeactivator (+ Service-Loader config)
17. @JsfPhaseListener
@ProjectStageActivated(
ProjectStage.Development.class,
CustomProjectStage.Debugging.class)
@Advanced
@JsfPhaseListener
public class DebugPhaseListener implements PhaseListener {
@Inject
private Logger logger;
public void beforePhase(PhaseEvent phaseEvent) {
this.logger.info("before " + phaseEvent.getPhaseId());
}
public void afterPhase(PhaseEvent phaseEvent) {
this.logger.info("after " + phaseEvent.getPhaseId());
}
public PhaseId getPhaseId() {
return PhaseId.ANY_PHASE;
}
}
18. @InvocationOrder
• Allows to specify the order of multiple artifacts
• Example
@JsfPhaseListener
@InvocationOrder(1) //optional
public class DebugPhaseListener
implements PhaseListener {
//...
}
20. CODI View-Configs and @Page
• Allow to
– host meta-data for pages
– structure pages
– navigate in a type-safe way
• Inline usage at page-beans is possible with restrictions
• Example for index.xhtml
@Page
public class Index implements ViewConfig {}
21. Organizing your pages
• Meta-data gets inherited
(multiple inheritance with interfaces)
• Nested classes for defining the view-id via convention
(explicit configuration is also possible)
• Example for /pages/index.xhtml
@Page(navigation = REDIRECT)
public interface Pages extends ViewConfig {
public @Page class Index implements Pages {
}
}
22. Inherit Page-Configs by Example
@Page(navigation = REDIRECT)
public interface Pages extends ViewConfig {
public @Page class Login
extends DefaultErrorView implements Pages {}
}
23. Type-safe Navigation
• View-Conig
public Class<? extends Pages> register() {
//...
return Pages.Login.class;
}
• ViewNavigationHandler (for manual navigation)
@Inject
private ViewNavigationHandler vnh;
vnh.navigateTo(Pages.Login.class);
• Navigation Event (PreViewConfigNavigateEvent)
Allows to observe type-safe navigations and change the
navigation target
24. @Secured by Example
@Secured(LoginAccessDecisionVoter.class)
public interface Secure extends Pages {
@PageBean(FeedbackPage.class)
public @Page class FeedbackList implements Secure {}
}
@ApplicationScoped
public class LoginAccessDecisionVoter extends
AbstractAccessDecisionVoter {
@Override
protected void checkPermission(
InvocationContext ic, Set<SecurityViolation> violations) {
if(...) {
violations.add(newSecurityViolation("access denied"));
}
}
}
25. View-Controller
• Via
– View-Config (@PageBean)
– Inline (@View)
– Package based
• @Page for Page-Beans
• @InlineViewConfigRoot as marker
• Annotations
– @InitView
– @PrePageAction
– @PreRenderView
– @PostRenderView
27. Error-Pages
• Configure a default error page
• Security violations default error page
(or the explicitly configured page)
• Manual Navigation to the default error view
(independent of the configured error page)
@Inject
private ViewNavigationHandler vnh;
vnh.navigateTo(DefaultErrorView.class);
28. Type-save Config by Example
@Specializes
public class CustomJsfModuleConfig
extends JsfModuleConfig {
@Override
public boolean isAlwaysKeepMessages () {
return false;
}
}
With Weld you have to use @Alternative + xml config
29. Custom View-Meta-data
• Allows to create custom meta-data
• Get the meta-data with:
ViewConfigResolver
#getViewConfigDescriptor(...)#getMetaData();
• Example
@Target({TYPE})
@Retention(RUNTIME)
@Documented
@ViewMetaData
public @interface AppInfo { ... }
@AppInfo
public @Page class About implements Pages {}
31. I18n – The Message-Module
• Highly customizable
• Easy fluent API
• Different argument formats
– Numbered
– Named
– EL-Expressions (optional)
• Serializable (key + config instead of the final message)
other users get the persisted message in their specific language
• Message-Payload (e.g. MessageSeverity)
• Different message sources
• Optimized for JSF (in combination with the JSF Module)
35. @Transactional
• Alternative to EJBs esp. outside an Application-Server
• Allows to customize the behaviour
• Supports multiple persistence-units with qualifiers
40. Bean-Validation by Example - 1
@Inject @Advanced
private Validator validator;
//...
validator.validate(user);
//...
@UniqueLoginName
public class User extends AbstractEntity
{
//...
}
41. Bean-Validation by Example - 2
@Target({TYPE}) @Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {
UniqueLoginNameValidator.class})
public @interface UniqueLoginName {
}
@Dependent
public class UniqueLoginNameValidator
extends ClassLevelValidator
<UniqueLoginName, User> {
@Inject
private UserRepository userRepository;
}
45. CODI and JUnit by Example
@RunWith(JUnit4.class)
public class SimpleTestCase extends AbstractJsfAwareTest {
@Inject private RegistrationPage registrationPage;
@Inject private UserRepository repository;
@Test public void testRegistration() {
User user = this.registrationPage.getUser();
user.setUserName("gp");
user.setFirstName("Gerhard");
//...
assertEquals(Pages.Login.class,
this.registrationPage.register());
assertEquals("Gerhard",
this.repository.loadUser("gp").getFirstName());
}
}
47. CODI and Cargo by Example
@RunWith(JUnit4.class)
public class SimpleTestCase
extends AbstractContainerAwareCargoTest {
@Test
public void testSimpleForm() {
SimplePageInteraction pageInteraction =
new SimplePageInteraction(getTestConfiguration())
.start(Pages.Index.class)
.useDefaultForm();
String inputId = "userName";
pageInteraction.setValue(inputId, "gpetracek")
.clickOk()
.checkState(Pages.Result.class);
}
}