100% found this document useful (11 votes)
76 views

(Ebook) Advanced Apex Programming in Salesforce by Dan Appleman ISBN 9781936754120, 1936754126 2024 scribd download

The document promotes various eBooks related to Salesforce development, including 'Advanced Apex Programming in Salesforce' by Dan Appleman, which focuses on design patterns and best practices for Apex programming. It emphasizes that the book is not a rehash of existing documentation but rather a compilation of real-world experiences and insights for intermediate and advanced developers. The document also mentions the availability of sample code and resources for readers to enhance their learning experience.

Uploaded by

dencelanenv4
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (11 votes)
76 views

(Ebook) Advanced Apex Programming in Salesforce by Dan Appleman ISBN 9781936754120, 1936754126 2024 scribd download

The document promotes various eBooks related to Salesforce development, including 'Advanced Apex Programming in Salesforce' by Dan Appleman, which focuses on design patterns and best practices for Apex programming. It emphasizes that the book is not a rehash of existing documentation but rather a compilation of real-world experiences and insights for intermediate and advanced developers. The document also mentions the availability of sample code and resources for readers to enhance their learning experience.

Uploaded by

dencelanenv4
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 57

Download Full Version ebook - Visit ebooknice.

com

(Ebook) Advanced Apex Programming in Salesforce by


Dan Appleman ISBN 9781936754120, 1936754126

https://ebooknice.com/product/advanced-apex-programming-in-
salesforce-23495170

Click the button below to download

DOWLOAD EBOOK

Discover More Ebook - Explore Now at ebooknice.com


Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...

Start reading on any device today!

(Ebook) Advanced Apex Programming in Salesforce by Dan


Appleman ISBN 9781936754151, 1936754150

https://ebooknice.com/product/advanced-apex-programming-in-
salesforce-34774506

ebooknice.com

(Ebook) Learning Salesforce Development with Apex: Learn


to Code, Run and Deploy Apex Programs for Complex Business
Process and Critical Business Logic by Paul Battisson ISBN
9789355510273, 9355510276
https://ebooknice.com/product/learning-salesforce-development-with-
apex-learn-to-code-run-and-deploy-apex-programs-for-complex-business-
process-and-critical-business-logic-45341160
ebooknice.com

(Ebook) Moving to VB .NET: Strategies, Concepts, and Code


by Dan Appleman (auth.) ISBN 9781430206682, 9781590591024,
1430206683, 159059102X
https://ebooknice.com/product/moving-to-vb-net-strategies-concepts-
and-code-4592322

ebooknice.com

(Ebook) Always Use Protection: A Teen’s Guide to Safe


Computing by Dan Appleman (auth.) ISBN 9781430209041,
9781590593264, 1430209046, 159059326X
https://ebooknice.com/product/always-use-protection-a-teens-guide-to-
safe-computing-4491258

ebooknice.com
(Ebook) Biota Grow 2C gather 2C cook by Loucas, Jason;
Viles, James ISBN 9781459699816, 9781743365571,
9781925268492, 1459699815, 1743365578, 1925268497
https://ebooknice.com/product/biota-grow-2c-gather-2c-cook-6661374

ebooknice.com

(Ebook) The Apex Shifter Complete Set (Apex Shifter #1-3)


by Emilia Hartley ISBN B07BWB3JN8

https://ebooknice.com/product/the-apex-shifter-complete-set-apex-
shifter-1-3-29856600

ebooknice.com

(Ebook) Beginning Salesforce DX: Versatile and Resilient


Salesforce Application Development by Ivan Harris ISBN
9781484281130, 1484281136
https://ebooknice.com/product/beginning-salesforce-dx-versatile-and-
resilient-salesforce-application-development-47432584

ebooknice.com

(Ebook) Dasar-Dasar dan Step by Step Four in One Web


Programming (HTML, JavaScript, PHP dan MYSQL) by Marvin
Chandra Wijaya
https://ebooknice.com/product/dasar-dasar-dan-step-by-step-four-in-
one-web-programming-html-javascript-php-dan-mysql-47309128

ebooknice.com

(Ebook) Functional Programming in R 4: Advanced


Statistical Programming for Data Science, Analysis, and
Finance by Thomas Mailund ISBN 9781484294864, 1484294866
https://ebooknice.com/product/functional-programming-in-r-4-advanced-
statistical-programming-for-data-science-analysis-and-finance-50439566

ebooknice.com
Advanced Apex Programming in Salesforce

Fourth Edition

By

Dan Appleman

Desaware Publishing

San Jose, California


The author and publisher have taken care in the preparation of this
book, but make no expressed or implied warranty of any kind and
assume no responsibility for errors or omissions. No liability is
assumed for incidental or consequential damages in connection with
or arising out of the use of the information or programs contained
herein.

Salesforce.com, Force.com, Lightning, VisualForce, Apex and


AppExchange are registered trademarks of Salesforce.com, Inc. All
other trademarks are the property of their respective owners.

Editor: Marian Kicklighter

Copyright © 2012-2018 by Daniel Appleman, All rights reserved.

Fourth eBook Edition

ISBN: 978-1-936754-13-7

www.AdvancedApex.com
Table of Contents
Introduction

Note to Readers of Previous Editions

Sample Code

Part I – Thinking in Apex

1 – The Execution Context

2 – Static Variables

3 – Limits

4 – Bulk Patterns

Part II – Application Architecture and Patterns

5 – Fun With Collections

6 – Triggers

7 – Going Asynchronous

8 – Concurrency

9 – Application Configuration

Part III – Testing, Debugging and Deployment

10 – Debugging and Diagnostics

11 – Unit Tests
12 – Designing for Packages

13 - Maintaining Apex

Conclusion

Acknowledgements

Full Circle Insights

Online Courses by the Author

Also by the Author


Introduction
This book is not a rehash of the Salesforce Apex language
documentation.

I just wanted to get that out of the way. I know there is sometimes
value in the kind of book where 90% of the content is a rephrasing
of the documentation and only 10% is new and interesting – a good
author can organize information to make it easier for beginners to
learn. But they are frustrating for intermediate and advanced
developers who have to sift endlessly through familiar content to
find one or two nuggets of new material.

So I’m going to assume that you either have read, or can read, the
Salesforce Apex language documentation. If you are new to Apex,
you will find this book helpful – especially if you are coming to Apex
from another language, but it is not a tutorial and will not replace
the Apex documentation. If you have Apex programming experience,
I’m confident you’ll find material here that will at the very least
prove thought provoking, if not occasionally mind-blowing.

This book is about design patterns, best practices, and creative


solutions to the kinds of problems developers face out in the real
world.

You see, language documentation is generally written by the


language team (or their technical writers) – which is good, because
they know the language best. But the language team members are
rarely application developers – that’s not their job.

White-papers and application notes are generally written by


technical evangelists and consultants who often do have real-world
experience, but are limited by the focus and format of the particular
white paper or article. Short articles (of which I’ve written many)
serve a purpose, but are often limited in the level of depth they can
achieve.

If you want to bring together real-world experience in a format that


allows for as much depth as necessary, and organizes the
information in such a way that concepts build on each other to really
teach the material – you need a book. You need a book written by
someone who actually writes production code, both as a consultant
for individual clients, and as a developer of applications for
distribution.

Which brings me to the story how I came to write this book.

For most of my career, I was a developer on Microsoft platforms –


proficient in C and C++, Visual Basic, VB .NET and C#. I ran (and
still run) the company Desaware, that published software for .NET
developers (desaware.com) and now publishes my books
(desawarepublishing.com). I also wrote a number of programming
books, and spent quite a few years on the speaker circuit -
presenting at conferences that focused on Microsoft technologies.

About eleven years ago, a Salesforce consultant I know needed an


Apex trigger written, and since I was one of the few programmers
she knew, she asked me to take a look. Writing that first trigger was
certainly easy enough – though I suspect I’d be embarrassed by the
code if I looked at it now. I found myself spending more and more
time working in Apex – I found it to be both challenging and fun.

About eight years ago, I joined her and two others to establish a
new company, Full Circle Insights, to develop a new Salesforce
application related to marketing and sales data and analytics. As
CTO, I designed and built the application – which evolved into a very
large and sophisticated native AppExchange app (an app that runs
entirely on the Force.com platform). In doing so, I learned a lot.

As I have always enjoyed sharing what I learn, I ended up writing


this book. It contains all of the things that I wish I had known eight
years ago when I first started working in Apex. Things that I learned
the hard way. Things that are either not found in the documentation,
or are hidden in a footnote somewhere when they should be
plastered across an entire page in bold flashing neon.

Think of this as a companion to the Apex Developer Guide – a


commentary if you will. The focus is on the core language and
design patterns. These are the essential foundations that you need
to work effectively in Apex with the various platform features such
as Lightning, VisualForce, and so forth (topics that are important,
and deserving of their own books, but are not covered here).

Parts of this book focus on concepts – ways of thinking that will be


fairly easy to follow, even for relative beginners and those
completely new to Apex. But parts of this book focus more on
advanced design patterns, and to really understand them, you’ll
need to dig into the code, and preferably install and experiment with
the samples. You may need to refer back to the language
documentation. You may even find parts of the book to be too hard
to follow on a first reading. In truth, the book would hardly deserve
the word “Advanced” in the title if this were not the case. If you do
find yourself getting stuck, skip or scan a section and then move on.
You’ll find it easier to digest the second time through.

By the time you’re done, I think you will find it was well worth the
effort.

Dan Appleman

[email protected]
Note to Readers of Previous
Editions
The Salesforce platform is updated three times a year. Some of the
updates are minor, some more significant, and some lead to radical
changes in what most would consider to be “best practices”. Best
practices are tricky – you can’t assume that just because something
is new, it represents the best way to do something.

Not only has the platform changed, but my own experience has
changed – or put another way, I keep learning as well. And since
this is a book born of real-world experience, those new experiences
are reflected in each new edition, along with those new platform
features that seem truly useful.

In preparing this edition, I went through every word of text and


every line of code. Some of the changes are structural – I’ve tried to
be more consistent in naming conventions (while remaining true to
my own belief that names should be descriptive). Keep in mind that
Apex is a case-insensitive language, so any casing errors that may
remain will not impact the functionality of the examples. And while
there are numerous changes scattered throughout the text and
code, here are the areas where the changes for this edition were
most significant:

All chapters: Any place where discussion of Salesforce orgs, features,


or the user interface comes into play, the primary focus is now on
Salesforce DX and Lightning.

Chapter 2: The section on “Controlling Program Flow” has been


largely rewritten with a new example.
Chapter 3: The sections on “CPU Time Limits”, “Benchmarking”, “24-
hour Limits” and “Other Platform Limits” are new or have been
rewritten.

Chapter 5: There’s a new discussion on detecting duplicate fields in


dynamic SOQL queries.

Chapter 6: The trigger framework has been enhanced, with


particular attention to handling record DML updates across multiple
trigger handlers (a subject discussed in previous editions but not
actually demonstrated).

Chapter 7: New coverage of platform events.

Chapter 9 is completely new. The previous chapters 9-12 are now


chapter 10-13 and the following paragraphs refer to them by their
new chapter number.

Chapter 10: Additional discussion of platform events.

Chapter 11: Revised recommendations for unit tests and managed


packages.

Chapter 13: Updated for Salesforce DX

With regards to sample code, previous editions of the book provided


an unmanaged package to install code as well as the zipped
metadata. This edition provides neither.

Instead, when you download the sample code you’ll see it includes a
git repository. Each chapter has a branch in Salesforce DX format
that you can check out when learning that particular chapter. Some
chapters include multiple commits to mark different steps or
variations of the code illustrated in the chapter.

This approach simplifies the sample code – at each commit or


branch you’ll see the correct code for that particular part of the
Visit https://ebooknice.com to
discover a wide range of
eBooks across various genres.
Enjoy exclusive deals and
discounts to enhance your
reading experience. Start your
digital reading journey today!
book, instead of having to dig through all of the code to find which
components match those for a particular chapter or part of a
chapter.

Salesforce DX represents both the future and today’s best practice


for Apex development, so my assumption is that anyone reading this
book will be either familiar with it, or ready to make that transition.
If you are new to Salesforce DX, there are numerous resources
available to get started including Trailhead. I also assume that you
have some basic familiarity with git. If you are new to git, I
encourage you to use a git UI such as SourceTree which makes it
easy to checkout branches and to see the files and changes in each
commit.

Finally, Salesforce.com has a habit of rebranding the platform for


reasons that are beyond my comprehension. When the third edition
came out, Force.com was in the processing of becoming the
“Salesforce Platform”. At this time, the latest rebranding is to the
“Lightning Platform”. For the purposes of this edition, the three
terms are used interchangeably.
Sample Code
You can download the sample code for this book from the book’s
website at AdvancedApex.com/samplecode. It is provided as a
directory containing a git repository. Each branch contains a chapter
in Salesforce DX format.

Depending on the chapter, progress through the chapter is


represented by commits which you can check out to obtain the
source code at that point in time. The commit description will match
the section in the book.

The sample code for some chapters includes a permission set named
“Advanced Apex” which you can assign to the current user to quickly
obtain access to fields or other elements used by the examples. In
other cases, you may need to explicitly set field or tab permissions.

When switching between chapters, it will generally be easiest to


create a new scratch org rather than trying to push changes directly
– though in many cases checking out a new branch and pushing the
source code will work.

For those who are not familiar with git, I recommend using
Sourcetree (https://www.sourcetreeapp.com), which is an excellent
GUI on top of git.

You will need to install the sample code to follow some of the
content in this book – the book does not contain the complete
listings of all the sample code.
About the Code Listings
This edition of Advanced Apex programming uses HTML formatted
text for listings. This is supported on all newer e-reader devices, but
will result in a poor experience on older devices that do not support
a mono-spaced font.

Depending on your device, you may see code listings wrap in ways
that make them hard to read. In those cases you'll find that it is
much easier to read the listings if you place your device in landscape
mode (supported on all newer devices).

Ultimately, my best recommendation is to download the sample code


and refer to it as needed.
Part I – Thinking in Apex
What is a computer language?

Ok, I know - that’s a stupid question to start with. Of course you


know what a computer language is. If you didn’t, you’d hardly be
reading a book that claims to be an advanced programming book.

At the same time, it’s a useful question for exactly that reason.
Because you do know what a computer language is, you’ll probably
be grateful if I don’t waste your time answering that question. In
fact, it brings to mind a long list of questions and introductory
material that are not worth discussing at all, either because you
should know them, or because you can easily find them in the
documentation.

So let’s begin with a partial list of material that I won’t try to teach
you.
Beyond Syntax
When we talk about computer languages in the context of actual
software development, we’re really talking about three different
things:

Language syntax – the actual text of the language.


Language semantics – what that text does when it executes.
Language platform (or framework) – what resources are
available to the language, and how the language interacts with
the underlying system.

Of these, this book will almost completely ignore the first item. If
you’ve used Apex at all, you’re probably well familiar with its syntax.
If you are migrating from another language, suffice to say that Apex
is syntactically similar to Java or C#, with most of the constructs you
would expect from a modern object-oriented language, including
support for single inheritance and interfaces.

Unlike Java or C#, Apex is not case sensitive. Some professional


developers are offended by this. Having years of experience in both
C# and Visual Basic (which is also not case sensitive), I’ll take the
case insensitive language any day. In my view, having to keep track
of case is pointless labor, and anyone who uses case to distinguish
between two variables or language elements is committing a mortal
sin. But that’s just my opinion – yours may differ.

In terms of semantics, we’ll largely ignore the core language


semantics. Most of the language constructs: control flow structures,
operators, variable declarations, and so on, work exactly as you
would expect. As of API 43, it even has a Switch statement!

In fact, Apex is so similar to other languages, that at first glance you


might think that it will be a quick and easy migration. And in truth, it
can be an easy migration – but only if you recognize a few areas
that are not only different, but different in huge, fundamental ways.

Most of this book will be dealing with the third item on the list – the
interaction of the language with the platform. But the rest of this
part of the book will focus on the four key concepts that you must
understand in order to succeed in Apex programming:

Execution Contexts
Static Variables
Bulk Patterns
Limits

These concepts dominate every aspect of software development


under Apex. Because of these concepts, Apex programming involves
radically different design patterns and architectures than Java and
C#, even though their syntax and even semantics are similar.

In a way, this is like learning a spoken language. You can memorize


words and phrases. But you don’t really know the language until you
start thinking and dreaming in it. My goal in this chapter is to help
you take the words and phrases that you know from the reference
documentation or other languages, and learn to think in Apex.
1 – The Execution Context
The execution context is one of the key defining concepts in Apex
programming. It influences every aspect of software development on
the Force.com platform.

An execution context has two characteristics:

It defines the scope and lifetime of static variables.


It defines the context for those governor limits that are reset
between execution contexts.

I’ll be discussing both static variables and limits in more depth later.
For now, the key facts to remember (and I assure you, once you
start working in Apex, you will never forget them) are:

Static variables are maintained throughout an execution context,


and are unique to an execution context.
Many (but not all) limits are reset between execution contexts.
For example, if governor limits restrict you to 100 database
queries in an execution context, each execution context can
have 100 database queries. Different types of execution
contexts may have different limits.
You can know when an execution context starts. You generally
can’t know when it ends.
Running Apex Code
An execution context begins when one of a number of possible
external events or operations happen that have the ability to start
running Apex code. These include:

A database trigger: Triggers can occur on insertion, update,


deletion or undeletion of many standard Salesforce objects and
all custom objects.
Future call (asynchronous call): Future calls can be requested
from Apex code. They run with extended limits.
Queueable Apex: Similar to a future call, this is another
mechanism for running code asynchronously.
Scheduled Apex: You can implement an Apex class that can be
called by the system on a scheduled basis.
Batch Apex: You can implement a class designed to process
large numbers of database records.
Platform Events: Apex can trigger on platform events –
Salesforce’s enterprise messaging queue.
Web service: You can implement a class that can be accessed
via SOAP or REST from an external site or from JavaScript on a
web page.
VisualForce and Lightning components: Your VisualForce pages
and Lightning components can execute Apex code in controllers
to retrieve or set page properties or execute methods.
Lightning Processes and Flows: These are declarative
programming tools that can call methods in Apex classes.
Global Apex: You can expose a global method that can be called
from other Apex code.
Anonymous Apex: Apex code can be compiled and executed
dynamically from the Developer Console, Force.com IDE or
through an external web-service call.
When Apex code starts executing as a result of any of these events
or operations, it runs within an execution context. If the event or
operation was caused by Apex code, or is part of a system process,
the code will continue to run in the same execution context that
caused the event or operation.

I know that sounds confusing. Let’s look at some examples.

Consider the simple case of a trigger on the update of a Lead object.


In the trivial case of an absolutely new organization with just one
trigger, the execution context begins when your trigger code begins
to run, and ends when your code exits as shown in Figure 1-1.

Figure 1-1 – Simple execution context

What if you have multiple triggers on lead insertion? This is not


uncommon. Code in organizations tends to evolve over time, and it’s
very common for one developer to build a new trigger on the same
event, rather than risk modifying (and breaking) trigger code written
by another developer. Now you can end up with the scenario shown
in Figure 1-2.

Figure 1-2 –Execution context with two triggers

As you can see, both triggers run in the same execution context. So
they share the same set of limits (as long as they are in the same
application – more on that later), and the same set of static
variables.

This seems simple enough. But what if this particular organization


has a workflow on the lead that does a field update? Now you may
end up with the scenario shown in Figure 1-3
Visit https://ebooknice.com to
discover a wide range of
eBooks across various genres.
Enjoy exclusive deals and
discounts to enhance your
reading experience. Start your
digital reading journey today!
Figure 1-3 –Execution context with two triggers and a workflow

As you can see, the field update workflow not only runs in the same
execution context, it can cause the triggers to execute again within
the same context.

This brings up an interesting question. How can you know if your


trigger is executing for the first time, or if it is executing again for
the same update because of a workflow or other trigger?

This is where static variables come into play. Remember, their


lifetime and scope are defined by the execution context. So, if you
had a static variable defined in a class “myclass” thus:
public Static Boolean firstcall = false;

You could use the following design pattern in your trigger to


determine if this was the first or subsequent call for this execution
context.
if(!myclass.firstcall)
{
// First call into trigger
myclass.firstcall = true;
}
else
{
// Subsequent call into trigger
}

This design pattern turns out to be extremely important, as you will


see later.

Let’s consider the ramifications of what you have just seen:

You can have multiple triggers on an event, but have no control


over the order in which they execute.
Limits are shared within an Execution Context; thus you may be
sharing limits with other code over which you have no control,
and which may be added after yours is built and tested.
Workflows, Flows and Lightning Processes, which can be
created by non-programmers, can impact the order and
execution of your Apex code in unpredictable ways, even
causing your code to execute again for the same object and
within the same execution context.

At this point, if you are coming to Apex from another language, you
might be feeling a certain amount of shock. On other platforms, you,
the developer, are largely in control of your application. User input
may be unpredictable and have to be accounted for, but you know
how to do that. It’s not as if users can modify the underlying
behavior of the application, or add code that interacts with your
application. Even if you do have a plug-in model or API, those using
it will be (hopefully) knowledgeable and expected to follow your
specifications, guidelines and documentation.

But Salesforce.com was designed to minimize the need for custom


software. The Salesforce.com logo is “no software”. So there are a
great many things that users can do that can impact the code that
you write. Because execution contexts are shared, there are things
that other developers can do that can impact the code that you
write.
And by impact, I mean break.

But don’t let this thought scare you. You’ll quickly adjust to the idea
that your finely crafted code can be broken by a junior system
administrator writing a careless validation rule. It’s just part of the
territory – and part of what makes Apex coding a fun challenge.

My point here isn’t to scare you, but to emphasize my earlier point.


Apex may look like Java, but because of fundamental platform
differences, it requires a different set of design patterns and
different approaches for architecting applications.
2 – Static Variables
In most computer languages, a class static variable is essentially a
global variable that is associated with a particular class. That means
that it exists regardless of whether you’ve actually created an
instance of the class, and that a single instance of the variable is
shared by all instances of the class and, in fact, by the entire
application.

So, for example, if you had the following class:


public class myclass {
public static int myclassstatic;
}

You could access myclass.myclassstatic anywhere in your code and


always access the same variable. Developers are accustomed to
using static variables in a variety of design patterns, such as sharing
data between classes, counting or maintaining lists of class instances
(objects), or as a way of organizing and controlling access to general
purpose global variables. Developers of multithreaded applications
also know to take care to synchronize access to static variables, in
order to avoid race conditions or data corruption.

That’s the case with Java, C#, C++, VB .NET and virtually every
block structured language.

Except for Apex.

The difference between static variables in Apex and most other


languages is simple in concept, but has a huge impact on the way
they are used.

Static variables in Apex have execution context scope and lifetime.


In other words, static variables can only be accessed from within the
execution context in which they are created, and are deleted when
the execution context completes.

Let’s first consider what this means in terms of traditional static


variable design patterns.

Static variables do not persist information between execution


contexts. They cannot be used to keep track of the overall
execution of your application, or to cache data or objects for
use while your application is running. In fact, Apex does not
currently support the equivalent of application or session
variables at all. Anything you wish to persist must be stored in
database objects or custom settings (more on that later).
There is no need for synchronization. A given execution context
runs on a single thread, so static variables are, in effect, the
equivalent of thread local storage – each thread has its own
copy of these variables and there is no need to synchronize
access. Which is a good thing; given that Apex has no real
synchronization objects.

But if Apex eliminates some design patterns that are common in


other languages, it offers some new ones that are essential for every
Apex developer to understand.
Maintaining Data Across Trigger
Invocations
Earlier in this chapter, you saw an example of how a static variable
could be used to remember that you had already executed the code
in an after-update trigger.

Here’s another common design pattern.

Let’s say you have a computationally intensive operation that you


wish to perform in a number of different scenarios. For example,
reassigning account ownership based on some rules a user has
defined. You might want to do this after a field value has changed
on the account, or any of its contacts or opportunities.

It’s very common to move longer operations into future calls –


asynchronous operations that can be queued by your code. Future
calls execute at some indeterminate time in the future, but because
the platform can schedule them based on server load, they are
granted higher limits than other execution contexts, and are thus
ideal for computationally intensive tasks.

You can only make up to fifty future calls from an execution context,
and you can’t make a future call from a future context. Because your
code may share an execution context with other code, ideally you
only want to invoke your future call once.

So in this scenario, you wish to initiate your future call from a


number of different triggers or conditions. How can you keep track
of whether or not you have already initiated the call? The answer:
use a static variable.

But how do you use it? You can’t use it as a flag to indicate that a
future call is required. That’s because in Apex you have no way of
knowing that you are exiting an execution context. You can,
however, use it as a flag to indicate that the call has already been
made.

Here’s a typical implementation of this design pattern:


public class SomeFutureOperations {

private static Boolean futureCallCalled = false;

public static void doFutureCall()


{
if(futureCallCalled || System.isFuture()) return;
futureCallCalled = true;
actualFutureCall();
}

@future
private static void actualFutureCall()
{
// Actual async code here
system.debug('actualFutureCall async operation');
}
}

You’ll learn more about asynchronous design patterns in Chapter 7.


Caching Data
In the previous example, you saw how a static variable can
“remember” a value throughout the duration of an execution context
in order to avoid one kind of limit. In this example, you’ll see how
they can be used to avoid another kind of limit.

Consider the case where you have one or more triggers or methods,
and the execution depends in some way on the user who triggered
the execution. You might be storing different field values based on
the user. Or you might be prohibiting certain operations, or
performing additional operations based on the user.

In this scenario, let’s say you’ve added a custom field to the User
object, call it UserIsSpecial__c, that controls these operations.

You can retrieve the current value of this field using the following
code:
User u = [Select UserIsSpecial__c from User
where ID = :UserInfo.getUserId()];
Boolean userIsSpecial = u.UserIsSpecial__c;

If you were only using this value in one place in your code, this
would be fine – you could just use the query as is. But if you intend
to use this value across multiple methods and triggers, this approach
could result in numerous SOQL operations (SOQL being the database
query language for the Force.com platform). The number of allowed
SOQL calls is limited within an Execution context – so you want to
minimize those calls where possible.

The solution is to cache the value the first time it is used. Rather
than try to anticipate where the first use will be (which can be tricky
in a complex application), it’s best to centralize access of the variable
by placing it in an Apex class as follows:
public class ThinkingInApex {

private static Boolean isUserSpecialChecked = false;


private static Boolean userIsSpecial = false;

public static Boolean isUserSpecial()


{
if(isUserSpecialChecked) return userIsSpecial;

User u = [Select UserIsSpecial__c from User


where ID = :UserInfo.getUserId()];
userIsSpecial = u.UserIsSpecial__c;
isUserSpecialChecked = true;
return userIsSpecial;

}
}

Now, you can obtain the user information by calling


ThinkingInApex.isUserSpecial() from anywhere in your code without
worrying about making redundant SOQL calls.

It turns out that taking this approach has additional benefits. What if
you later decide that you need other information from the user
record? Say, the current user’s time zone?

You could extend the previous example as follows:


public class ThinkingInApex {

private static Boolean userCacheLoaded = false;


private static Boolean userIsSpecial = false;
private static String userTimeZone = null;

public static Boolean isUserSpecial()


{
if(userCacheLoaded) return userIsSpecial;
cacheUserInfo();
return userIsSpecial;
}

public static String userTimeZone()


{
if(userCacheLoaded) return userTimeZone;
cacheUserInfo();
Exploring the Variety of Random
Documents with Different Content
leur demandait qu’un signe. Ces chrétiens ne délibéraient pas, ne se
disaient pas : Que deviendra l’Église et qui servira Dieu si nous
mourons ? Ils confessaient le Dieu unique et ils mouraient. C’est
ainsi qu’ils ont fait tomber le fer des mains du bourreau, ôté le glaive
des mains de l’Empereur, et arraché le genre humain de l’abîme.
Mais ce qu’ils avaient affirmé persécutés, ils ne l’ont pas renié
vainqueurs. Ils avaient affirmé la royauté du Christ, ils l’ont établie, et
la croix du Labarum a dominé la couronne impériale.
Le Déchu, le grand artisan d’hérésie s’appelle Satan,
Adversarius ; l’adversaire du juste, du vrai, du bien ; et ce qu’il
propose, est ce qu’il ne faut pas accepter. Comme il proposait jadis
l’absorption, dans le même but, par des moyens analogues, par les
mêmes organes ennemis et trompeurs, tantôt menaçant tantôt
séduisant, il propose maintenant la séparation. Il disait aux premiers
chrétiens : Abdiquez la liberté, entrez dans l’empire. Il nous dit
aujourd’hui : Sortez de l’empire, entrez dans la liberté. Jadis :
Unissez-vous ; aujourd’hui : Séparez-vous. Jadis, une union qui eût
avili l’Église ; aujourd’hui, une séparation qui avilirait la société. Ni
cette union ne convenait alors, parce qu’elle eût été l’absorption, ni
cette séparation ne serait bonne aujourd’hui, parce qu’elle serait la
répudiation. L’Église ne répudie pas la société humaine et ne veut
pas en être répudiée. Elle n’a pas abaissé sa dignité, elle
n’abdiquera pas son droit, c’est-à-dire, au fond, sa liberté royale. Il
est de l’intérêt de l’Adversaire, non de l’intérêt de l’Église et de la
société chrétienne d’ôter la croix à la couronne et d’ôter la couronne
à la croix.
XVIII

Les chrétiens ont pris à la société païenne ses armes et ses


temples pour les transformer, non pour les détruire. Du temple ils ont
expulsé l’idole ; à la force, ils ont imposé le droit. Cette folle pensée
d’anéantir la force ne leur est pas même venue. La force se laisse
déplacer, se laisse discipliner, se laisse sanctifier : qui se flattera de
l’anéantir, et pourquoi donc l’anéantir ? Elle est une très-bonne
chose ; elle est un don de Dieu, un caractère de Dieu. Ego sum
fortissimus Deus patris tui [14] .
[14] Genèse, XLVI, 3.

Comme le droit est par lui-même une force, la force par elle-
même peut être un droit. Le genre humain et l’Église reconnaissent
un droit de la guerre. De ce fer qu’il ôtait à la force barbare, le
christianisme a fait des cuirasses pour les faibles, de nobles épées
dont il a armé le droit. La force aux mains de l’Église est la force du
droit, et nous ne voulons pas que le droit demeure sans force. La
force à sa place et faisant son office, voilà l’état régulier.
Parce que dans le monde présent la force n’est pas partout à sa
place, c’est-à-dire à la disposition de l’Église ; parce que loin de
servir le droit, elle abuse contre le droit, conclurons-nous avec les
illuminés qui décrètent, les uns l’anéantissement de la force, les
autres que le droit suprême n’aura plus jamais la force en main, de
peur qu’il ne vienne à gêner la liberté qui veut détruire la vérité ?
Il faudrait, au contraire, donner avec joie tout autre sang pour
remettre la force dans son rôle légitime, pour l’attacker au seul
service du droit.
La force doit protéger, affermir, venger le plus grand, le plus
illustre, le plus nécessaire droit de l’homme, qui est de connaître et
de servir Dieu ; elle doit mettre l’Église à même de dispenser ce droit
à tout homme sur la terre. N’abandonnons pas cette vérité que le
catholicisme libéral jette et noie dans le courant, avec tant d’autres.
XIX

Elle est indigne, cette suggestion de suivre le courant ; elle


révolte même le simple honneur humain, et c’est un trait de ce
temps-ci qu’on la puisse tenter sur des hommes qui ont été marqués
du saint chrême ! Imaginons qu’un roi renversé du trône, seul et
dernier espoir de la patrie conquise, vient tout à coup déclarer qu’il
s’estime justement détrôné et qu’il n’aspire qu’à jouir de ses biens
particuliers, suivant le droit commun, sous la protection des
déprédateurs de son peuple : voyez-vous l’immense avilissement de
ce malheureux ! Cependant ce ne serait rien en comparaison de ce
que l’on nous propose.
Ce roi imaginaire ferait une ignominie gratuite. On ne le voudrait
pas croire. Ceux à qui il offrirait de vendre ses droits et son honneur
lui diraient : Allons donc ! Tu es roi…
Nous ferions pire, et par cette raison l’on nous croirait moins
encore. J’ajoute que l’on aurait grandement raison de ne nous croire
pas. Comme autrefois parmi les jureurs de la constitution civile du
clergé, il y aurait parmi nous des repentants et des rétractants. Or,
les catholiques qui demeureraient ou redeviendraient simplement
catholiques, feraient douter de la sincérité de ceux qui voudraient
rester libéraux. Quel parti prendraient ces derniers, entre les
orthodoxes qui leur jetteraient l’anathème et les incrédules qui leur
réclameraient des garanties ? Voilà une éventualité certaine dont ils
doivent se préoccuper. Si les catholiques libéraux se rattachent au
groupe fidèle, s’ils se soumettent à l’enseignement de l’Église qui
affirme ses droits sur le monde, ils n’ont rien fait. S’ils fournissent les
garanties qu’on exige d’eux dans l’autre camp, ils se séparent, ils
trouvent bon que la liberté impose silence aux dissidents, ils donnent
les mains à la persécution, ils sont du même coup apostats de
l’Église et apostats de la liberté.
Ils peuvent compter qu’ils n’échapperont pas à l’un ou à l’autre
de ces termes :
Libéraux pénitents, — ou catholiques impénitents.
XX

Mais je fais une hypothèse. J’admets que nous suivions tous le


courant. Je dis tous, sauf le Pape, car l’hypothèse ne peut aller
jusque-là. Qu’en résulterait-il ? Il y aurait une force de moins sur la
terre. Quelle force ? Ah ! ce ne serait point la force barbare, ni la
force brutale…
La force qu’il y aurait de moins sur la terre serait cette force par
laquelle il a plu à Dieu jusqu’ici de vaincre le monde, et le monde
jusqu’ici est encore vaincu. Dieu triomphe par un petit nombre de
fidèles ; ce petit nombre, pusillus grex, à qui il est dit, comme au
commencement : « Ne craignez point » ; ce petit nombre qui est
appelé le sel de la terre. Si le sel s’affadit, avec quoi salera-t-on ? [15]
[15] Matth., V. 13.

O sagesse prophétique de la parole divine ! le grain de sable est


la sentinelle de Dieu sur le bord de l’Océan, et lui dit : Non amplius !
Le grain de sel est la vigueur des montagnes et la fécondité des
vastes prairies.
Nous nous tournons vers le Crucifié de Jérusalem, vers le
Crucifié de Rome, vers sa vérité abandonnée et trahie ; nous lui
disons : Je te crois, je t’adore et je veux bien être foulé aux pieds
comme toi, tourné en dérision comme toi ; je veux bien mourir avec
toi !… Nous disons cela, et le monde est vaincu.
Il ne sera jamais vaincu autrement, jamais nous ne lui
arracherons autrement ses armes, dans le but de les transfigurer et
de les sanctifier en nous en servant pour éteindre toute voix de
blasphème et aplanir tout obstacle entre les petits de ce monde et
l’éternelle vérité. Car il faut que tout homme sache et prononce ces
paroles, ce Credo qui seul peut délivrer le monde, cet adveniat qui
sollicite l’éternelle paix.
XXI

La première parole de grande liberté qui ait été prononcée d’une


bouche mortelle, le premier acte de grande liberté que le genre
humain ait vu accomplir, ce fut quand deux pauvres juifs, les apôtres
Pierre et Jean, proclamèrent le devoir d’obéir à Dieu plutôt qu’aux
hommes, et continuèrent de répandre l’enseignement que l’erreur et
la persécution, sous des masques de justice et de prudence,
voulaient supprimer [16] . Qui suit cet exemple est libre, libre des faux
juges, libre des faux sages ; il entre dans la cité imprenable ; sa
pensée, délivrée des basses terreurs, est soustraite à l’empire de la
mort ; il met à couvert de l’esclavage tous ceux qu’il peut persuader.
[16] Act. Apost., IV, 19-20.

Mais il faut observer deux choses.


Premièrement, cet acte de liberté que font les apôtres envers les
puissances de la terre, est en même temps un grand hommage de
soumission qu’ils font envers Dieu, et ils ne sont si forts contre le
monde que parce qu’ils obéissent à Dieu.
Dans un discours tenu au congrès de Malines, discours éloquent,
très-célèbre parmi les catholiques libéraux, on fait remonter la liberté
de conscience à ce premier et fameux non possumus, on dit qu’elle
y fut créée et promulguée. — Tout au contraire, selon la juste
remarque d’un publiciste anglais [17] , c’est ce jour-là, c’est par ce
non possumus que la conscience humaine connut et accepta le frein
d’une loi immuable. Ce n’était pas un principe de liberté libérale que
saint Pierre évoquait : il proclamait le devoir impérissable,
irrévocable, imposé de Dieu qui l’obligeait de prêcher la Révélation.
Il n’annonçait donc pas au monde l’émancipation libérale de la
conscience : il chargeait au contraire la conscience du glorieux poids
de rendre témoignage à la vérité ; il l’émancipait des hommes, non
pas de Dieu. Il pouvait demander aux païens, de la part de Dieu, la
liberté pour les chrétiens, il ne donnait certainement ni ne rêvait de
donner aux chrétiens la licence d’élever l’erreur au niveau de la
vérité, de telle sorte qu’elles dussent un jour traiter d’égale à égale,
et que la vérité considérât l’erreur comme souveraine de droit divin
en tel lieu, pourvu qu’elle fût elle-même souveraine ou tolérée en un
autre lieu. Et quelles réponses alors cette vérité humiliée et diminuée
saurait-elle faire aux sophismes sans nombre de l’erreur ?
[17] Les Rapports du Christianisme avec la Société
civile, par Édouard Lucas, discours prononcé à
l’Académie Catholique de Londres, et publié par Mgr
Manning.

Secondement, cette vérité de délivrance, cette vérité unique,


l’Église seule a mission de l’enseigner et elle n’en persuade que les
âmes remplies de Jésus-Christ.
Où Jésus-Christ n’est point connu, l’homme obéit à l’homme et
lui obéit absolument ; où la connaissance de Jésus-Christ s’efface, la
vérité baisse, la liberté subit une éclipse, la vieille tyrannie reprend et
étend ses anciennes frontières. Quand l’Église ne pourra plus
enseigner Jésus-Christ tout entier, quand les peuples ne
comprendront plus qu’il faut obéir à Dieu plutôt qu’aux hommes,
quand il ne s’élèvera plus de voix pour confesser la vérité sans
déguisement et sans amoindrissement, alors la liberté aura quitté la
terre. Alors l’histoire humaine sera près de sa fin.
Néanmoins, tant qu’il restera un seul homme de foi parfaite,
celui-là sera libre du joug universel, aura dans ses mains ses
destinées et celles du monde ; le monde n’existera que pour la
sanctification de ce dernier. Et si ce dernier aussi apostasiait, s’il
disait à l’Antechrist, non qu’il a raison de persécuter Dieu, mais
seulement qu’il lui est permis de ne pas employer sa force à faire
régner Dieu, ce serait sa sentence et celle du monde que
prononcerait l’apostat. La terre ne donnant plus à la vérité divine la
confession et l’adoration qu’elle lui doit, Dieu retirerait son soleil.
Privé du contrepoids de l’obéissance et de la prière, le blasphème
ne monterait pas au ciel, mais il périrait aussitôt. De lui-même il
retomberait dans le puits de l’abîme.
XXII

Mais le dernier mot de l’Église militante ne sera pas une parole


d’apostasie. Je me représente le dernier chrétien en face du
suprême Antechrist, à la fin de ces jours terribles, quand l’insolence
de l’homme se sera stupidement réjouie d’avoir vu les étoiles tomber
des cieux. On l’amène lié, à travers les huées de cette boue de Caïn
et de Judas qui s’appellera encore l’espèce humaine. — Et ce sera
l’espèce humaine en effet ; l’espèce humaine parvenue au comble
de la science, descendue au dernier degré de l’abjection. Les anges
saluent l’astre qui n’est pas tombé, l’Antechrist contemple le seul
vivant qui refuse d’adorer le mensonge et de dire que le Mal est le
Bien. Il espère encore le séduire ; il demande à ce chrétien comment
il veut être traité. Que penserons-nous que le chrétien réponde, et
que peut-il répondre, sinon qu’on le traite en roi ? Il est le dernier
fidèle, il est le dernier prêtre, c’est lui qui est le Roi. Il a tout l’héritage
d’Abraham, tout l’héritage du Christ. Dans ses mains enchaînées, il
tient les clefs qui ouvrent la vie éternelle ; il peut donner le baptême,
il peut donner le pardon, il peut donner l’Eucharistie ; l’autre ne peut
donner que la mort. Il est roi ! Et je défie bien l’Antechrist avec toute
sa puissance, de ne pas le traiter en roi, puisqu’enfin le cachot lui est
aussi un empire et le gibet un trône.
A qui ferait aux catholiques la même question, les catholiques
doivent la même réponse. Le libéralisme moderne veut que les
enfants de l’Église lui donnent un sacre et il leur parle comme le roi
sarrazin parlait à Louis de France : — Si tu veux vivre, fais-moi
chevalier.
Le saint captif lui répondit : — Fais-toi chrétien.
XXIII

Deux puissances vivent et sont en lutte dans le monde moderne :


la Révélation et la Révolution. Ces deux puissances se nient
réciproquement, voilà le fond des choses.
La lutte a donné naissance à trois partis :
1o Le parti de la Révélation, ou parti du Christianisme. Le parti
Catholique en est la tête si élevée au-dessus des ignorances et des
bassesses contemporaines, qu’elle semble n’avoir pas de corps ;
mais cependant ce corps, souvent presque invisible, existe, et il est
même le plus réellement puissant qui soit sur la terre, parce que,
indépendamment du nombre, il est le seul qui possède véritablement
cette force incomparable et surhumaine qu’on appelle la Foi.
2o Le parti Révolutionnaire, dont les écoles dites libérales ne sont
que les masques indécis et la parole changeante et hypocrite.
3o Le Tiers-Parti, qui prétend tenir des deux autres et qui se croit
de force à les concilier. Le Tiers-Parti se nomme l’Éclectisme et il est
la Confusion, c’est-à-dire l’Impuissance.
Par cela même que le Tiers-Parti adopte la Révolution, il nie le
Christianisme, dont la Révolution est la contradiction absolue et la
négation formelle. Par cela même que le parti Catholique est
l’affirmation de la vérité chrétienne, il nie la Révolution qui est le
mensonge anti-chrétien, il nie le Libéralisme et l’Éclectisme, qui ne
sont, chez la plupart, que l’hypocrisie de ce mensonge, et chez un
certain nombre que le résultat de ses séductions. Le parti Catholique
les nie. Nous les nions comme nos pères ont nié l’idolâtrie, l’hérésie
et le schisme ; nous les nions dussions-nous périr ; et nous savons
que si nous périssons en ce combat nous ne serons pas vaincus.
C’est sous le drapeau du Tiers-Parti, dans la Confusion, dans
l’Impuissance que le Libéralisme catholique expose ses
combinaisons prétendues conciliatrices, partout mal accueillies,
fréquemment repoussées avec dérision. Les catholiques, qui ont leur
conception dogmatique et leur pratique historique de la liberté, ne
veulent pas de ses systèmes compliqués et louches à tant d’égards ;
les révolutionnaires, les libéraux et les éclectiques, qui prétendent
avoir leur christianisme, le renvoient à son église, dont il n’a pas
secoué le joug. Ils lui rappellent que son église ne l’avoue pas, que
même elle l’avertit de prendre garde. Ils lui signifient que son église
n’est pas la leur : dans leur église à eux, les chrétiens ne peuvent
entrer que par la porte de l’apostasie.
XXIV

On est attristé de voir des hommes d’un grand mérite et qui ont
rendu de grands services, s’efforcer de faire pénétrer chez les
catholiques des doctrines que ceux-ci repoussent comme
attentatoires aux droits et à la dignité de l’Église, tandis que les
adversaires et les ennemis de l’Église les rejettent comme encore
trop imprégnées de l’esprit chrétien. Leurs formules, inspirées par
cet esprit de compromis qui confond toutes les limites, rencontrent
partout le même sort malheureux. Ils parlent de l’indépendance de
l’Église : ce mot seul est de trop pour les révolutionnaires, on leur
enjoint de l’effacer : et en même temps, d’un autre côté, comme ils
parlent aussi de l’indépendance de l’État, les catholiques observent
que sous le couvert de ce mot, par la force des choses, ils
subordonnent la société religieuse au pouvoir civil et font dépendre
l’existence matérielle du christianisme de la bienveillance de ses
ennemis, lesquels, en toute circonstance, se montrent non-
seulement indifférents mais hostiles, non-seulement hostiles mais
furieux. Il s’agit toujours de concilier l’inconciliable, d’obtenir pour
l’Église une grâce qu’on ne veut point lui accorder, de soumettre
l’Église à des conditions de grâce qu’elle ne saurait supporter. Nulle
richesse d’éloquence ne peut dissimuler longtemps ce fond
d’incurable misère, nulles paroles dans aucune langue n’ont une
élasticité qui puisse mettre d’accord et retenir ensemble de pareilles
contradictions. Libre coopération, indépendance réciproque des
deux pouvoirs, etc. Que signifient ces sonorités ? Que tirer
pratiquement de la « libre coopération » de l’âme et du corps, de
« l’indépendance réciproque » de la matière et de l’esprit ?
Il y a des mots plus malheureux, parce qu’ils ont une portée plus
nette. L’invitation faite à l’Église de renoncer au privilége est un de
ces mots qui blessent le sens catholique.
En effet, l’Église a une constitution divine, elle vit de son droit
propre, et non de privilége. Qui donc lui aurait accordé un privilége
qui ne lui appartînt pas de nature ? L’État ? Mais alors la société
civile est donc supérieure à la société religieuse et peut légitimement
lui reprendre ce qu’elle lui a bénévolement octroyé ? L’histoire,
d’accord avec le bon sens chrétien, condamne la fausse vue que
trahit ce langage. L’Église n’a pas été faite par l’État : c’est elle au
contraire qui a fait l’État et la société ; et ni l’État ni la société n’ont
octroyé à l’Église des priviléges : ils lui ont reconnu une manière
d’être antérieure à leur propre existence, un droit qui ne relève d’eux
en aucune sorte et qu’ils ne peuvent modifier que par un abus contre
lequel l’intérêt public l’oblige de protester.
Nous ne pouvons partager l’ignorance où l’ingratitude
révolutionnaire prend soin de s’enfermer. Nous savons que l’Église a
grandi malgré la puissance païenne, qu’elle a changé l’assiette du
monde, qu’elle est, en un mot, la mère et l’institutrice des États
chrétiens, et que la supériorité de leur civilisation est due à ses
principes et en dépend toujours. Nous savons aussi que l’Église n’a
pu accomplir ce grand ouvrage, ne l’a pu défendre et ne le pourra
maintenir qu’au moyen de cette constitution propre qui lui a été
donnée de Dieu pour agir dans le monde en sa double qualité de
Mère et de Reine, également maîtresse du genre humain par
l’amour, par la lumière et par l’autorité. Et nous attribuerons
aujourd’hui aux écoulements déjà si restreints de cette suprématie
maternelle et royale, le caractère flétrissant de priviléges, de
concession humaine qu’il faut enfin abdiquer ! L’Église a moins
encore le droit de les abdiquer que la société le droit de les
suspendre, car il ne lui est pas donné de se méprendre sur la source
d’où ils viennent et sur le but qu’ils doivent réaliser. En présence de
l’État incrédule ou hérétique, elle saura subir la privation temporaire
de l’exercice de sa prérogative divine ; elle ne peut proclamer qu’elle
en fait l’abandon, qu’elle rejette comme mauvais ou superflu ce qui
lui a été, non-seulement conféré, mais imposé de Dieu pour le bien
du monde. Quand l’Église conclut un concordat, elle ne traite pas en
subordonnée, mais en supérieure ; c’est elle qui concède ; elle ne
reçoit pas des priviléges, elle en accorde. Elle les accorde à regret,
car si elle évite par là un plus grand mal, l’expérience a trop prouvé
que ces concessions ne sont guère propices au bien général, rien de
ce qui affaiblit le sentiment chrétien ne pouvant tourner à l’avantage
de personne.
L’argument que le Libéralisme croit tirer de ces concessions
contre les principes, est indigne d’une raison chrétienne. En premier
lieu, l’Église ne concède point sur les principes, ne signe point de
traités où ils ne soient réservés. En second lieu, exposée aux coups
emportés de la force et n’ayant d’autre arme naturelle que sa
patience, l’Église, suivant la profonde observation de J. de Maistre,
« ne refuse à la souveraineté qui s’obstine, rien de ce qui ne fait
naître que des inconvénients. »
XXV

Les docteurs du libéralisme catholique se flattent d’expliquer la


fameuse devise « l’Église libre dans l’État libre » en disant que par là
ils entendent « la liberté de l’Église fondée sur les libertés
publiques ».
Ce n’est pas ainsi que l’entendaient nos ancêtres, remarque le
publiciste anglais que nous avons déjà cité. Et il reproduit ces
paroles du cardinal Wiseman, dans ses Conférences sur les
concordats : « Nos pères étaient si éloignés de redouter les libertés
de l’Église qu’il leur semblait en les développant faire faire autant de
progrès aux libertés civiles. A peine existe-t-il une charte qui ne base
son système d’affranchissement sur la liberté de l’Église et l’exercice
illimité de ses droits. » Faudra-t-il, ajoute M. Lucas, renverser
l’ancien ordre de choses, et au lieu de ces libertés publiques
fondées sur l’organisation chrétienne, chercher dans les libertés
politiques la base de celles de la religion… Cette proposition irait à
asseoir l’immuable sur le mouvant. Prenons garde aux conclusions
que l’on peut tirer d’un langage équivoque : il est périlleux d’habituer
toute une génération à porter de l’ambiguité dans les questions
d’une importance vitale, et en vantant outre mesure la droiture avec
laquelle nos ennemis sauraient appliquer des principes
insoutenables, on prépare mal la jeunesse à combattre et à
supporter les persécutions futures.
C’est encore une ambiguité d’avancer que l’Église ne peut être
libre qu’au sein d’une liberté générale. Que veut-on faire entendre, si
ce n’est que la liberté de l’Église dépend de causes extrinsèques ?
Et cependant la société chrétienne existant par la volonté divine,
ayant pour chef Jésus-Christ qui lui a assuré une durée
impérissable, ne pourrait qu’être libre par sa nature et son essence ;
et cette liberté se communique à toute la société, sur laquelle elle
agit comme le levain dans la pâte et comme l’âme sur le corps.
Il est impossible de comprendre comment la société pourrait être
asservie là où l’Église est vraiment libre ; tandis que la société la
plus affranchie en apparence, si elle souffre que l’Église soit liée, se
verra liée elle-même encore plus étroitement, et ne sera en réalité
que libertine, et non pas libre. La police permet beaucoup de choses
que la liberté interdirait, ou plutôt s’interdirait ; mais ces licences que
donne la police ne sont point la liberté, ne seront jamais la liberté.
Dans une société qui restreint la liberté de l’Église, l’individu fera
peut-être ce qu’il voudra de son corps, et n’en voudra rien faire de
bon ; son âme ne lui appartient pas, et bientôt son corps même ne
lui sera pas laissé.
Si l’Église ne peut être libre qu’au sein d’une liberté générale,
c’est dire qu’elle ne peut être libre qu’à la condition de voir s’élever
contre elle la liberté de la nier et de la détruire par toutes les
offenses et tous les moyens légaux qu’un tel ordre de choses mettra
nécessairement aux mains de ses ennemis. Et comme elle y doit
non moins nécessairement ajouter la renonciation à ses
« priviléges », sans quoi il n’y aurait plus de liberté générale, il en
résultera qu’elle perdra d’autant le pouvoir d’imposer aux hommes le
frein intérieur par lequel ils deviennent capables et se sentent dignes
de la liberté. Dès lors, par une conséquence fatale, le frein politique
montera, et la société verra vite arriver cette heure funeste où César,
du consentement de la « liberté générale », se déclare pontife et
dieu : Divus Cæsar, imperator et summus pontifex.
Ainsi, par la « liberté générale » et par la « suppression du
privilége », son corollaire obligé, le Christianisme prendrait dans le
monde une position encore inférieure à celle qu’il occupe
aujourd’hui.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebooknice.com

You might also like