Professional Documents
Culture Documents
(Download PDF) Pro Jakarta Ee 10 Open Source Enterprise Java Based Cloud Native Applications Development Peter Spath Full Chapter PDF
(Download PDF) Pro Jakarta Ee 10 Open Source Enterprise Java Based Cloud Native Applications Development Peter Spath Full Chapter PDF
https://ebookmass.com/product/beginning-cloud-native-development-
with-microprofile-jakarta-ee-and-kubernetes-1st-edition-tarun-
telang/
https://ebookmass.com/product/beginning-spring-boot-3-build-
dynamic-cloud-native-java-applications-and-microservices-second-
edition-k-siva-prasad-reddy/
https://ebookmass.com/product/building-modern-business-
applications-reactive-cloud-architecture-for-java-spring-and-
postgresql-1st-edition-peter-royal-2/
Building Modern Business Applications: Reactive Cloud
Architecture for Java, Spring, and PostgreSQL 1st
Edition Peter Royal
https://ebookmass.com/product/building-modern-business-
applications-reactive-cloud-architecture-for-java-spring-and-
postgresql-1st-edition-peter-royal/
https://ebookmass.com/product/pro-spring-security-securing-
spring-framework-6-and-boot-3-based-java-applications-third-
edition-massimo-nardone/
https://ebookmass.com/product/modern-enterprise-architecture-
using-devsecops-and-cloud-native-in-large-enterprises-1st-
edition-jeroen-mulder/
https://ebookmass.com/product/beginning-ejb-3-java-ee-7-edition-
jonathan-wetherbee/
https://ebookmass.com/product/cloud-native-computing-pethuru-raj/
Pro
Jakarta EE 10
Open Source Enterprise Java-based
Cloud-native Applications Development
—
Peter Späth
Pro Jakarta EE 10
Open Source Enterprise
Java-based Cloud-native
Applications Development
Peter Späth
Pro Jakarta EE 10: Open Source Enterprise Java-based Cloud-native Applications
Development
Peter Späth
Leipzig, Sachsen, Germany
Introduction������������������������������������������������������������������������������������������������������������xix
v
Table of Contents
vii
Table of Contents
viii
Table of Contents
ix
Table of Contents
Alternatives������������������������������������������������������������������������������������������������������������������������������� 249
Producers���������������������������������������������������������������������������������������������������������������������������������� 251
Scope���������������������������������������������������������������������������������������������������������������������������������������� 253
Interceptors������������������������������������������������������������������������������������������������������������������������������� 255
Decorators�������������������������������������������������������������������������������������������������������������������������������� 255
x
Table of Contents
xi
Table of Contents
xii
Table of Contents
xiii
Table of Contents
Index��������������������������������������������������������������������������������������������������������������������� 481
xiv
About the Author
Peter Späth graduated in 2002 as a physicist and became an IT consultant, mainly for
Java-related projects. In 2016, he decided to concentrate on writing books on various
technology-related topics, with his main focus on software development. With two
books about graphics and sound processing, two books about Android app
development, and several books about Java, Späth continues his efforts in writing
software development-related literature.
xv
About the Technical Reviewer
Massimo Nardone has more than 25 years of experience
in security, web/mobile development, cloud, and IT
architecture. His true IT passions are security and Android.
He has been programming and teaching others how to
program with Android, Perl, PHP, Java, VB, Python, C/C++,
and MySQL for more than 20 years. He holds a Master of
Science degree in computing science from the University
of Salerno, Italy. He has worked as a CISO, CSO, security
executive, IoT executive, project manager, software engineer,
research engineer, chief security architect, PCI/SCADA
auditor, and senior lead IT security/cloud/SCADA architect for many years. His technical
skills include security, Android, cloud, Java, MySQL, Drupal, Cobol, Perl, web and
mobile development, MongoDB, D3, Joomla, Couchbase, C/C++, WebGL, Python, Pro
Rails, Django CMS, Jekyll, Scratch, and more. He was a visiting lecturer and supervisor
for exercises at the Networking Laboratory of the Helsinki University of Technology
(Aalto University). He also holds four international patents (in the PKI, SIP, SAML,
and Proxy areas). He is currently working for Cognizant as the head of cybersecurity
and CISO to help clients in areas of information and cybersecurity, including strategy,
planning, processes, policies, procedures, governance, awareness, and so forth. In
June, 2017, he became a permanent member of the ISACA Finland Board. Massimo has
reviewed more than 45 IT books for different publishing companies and is the co-author
of Pro Spring Security: Securing Spring Framework 5 and Boot 2-based Java Applications
(Apress, 2019), Beginning EJB in Java EE 8 (Apress, 2018), Pro JPA 2 in Java EE 8 (Apress,
2018), and Pro Android Games (Apress, 2015).
xvii
Introduction
Java is not just a programming language, it’s also a platform used to host software. As
far as enterprise environments go, Java Enterprise Edition Jakarta EE (formerly JEE) has
an extensive collection of APIs that are particularly useful for addressing corporate IT
requirements.
This book covers advanced topics of Jakarta EE development. This includes pro-
level web tier development, architecture-related matters, advanced XML and JSON
processing, application clients and scripting languages, resource handling, high-level
security enhancements, and advanced monitoring and logging techniques.
The target version of Jakarta EE is version 10. Unless otherwise noted, server scripts
have been tested on Ubuntu 22.04. Switching to Debian, Fedora, or OpenSUSE Leap
should not impose any problems.
The book is for advanced enterprise software developers with knowledge of
Java Standard Edition version 8 or later and some experience in Jakarta EE (or JEE)
development. Having read the book titled Beginning Jakarta EE from the same author
and publisher (ISBN: 978-1-4842-5078-5) will surely help, but it’s not a strict prerequisite.
I keep references to the beginner book at a bare minimum. I also assume that you can
use the online API references, so this book is not a complete reference in the sense that
not all API classes and methods are listed. Instead, the book includes techniques and
technologies that will help professional Java enterprise-level developers deal with topics
and master problems that arise in a corporate environment.
The book uses the Linux operating system as its development platform, although
the code can run on other platforms without requiring complex changes. The server
installations—like version control, continuous integration systems, and operating
instructions—all target the Linux operating system. This book also does not cover
hardware issues, except for some cases where hardware performance has a noticeable
impact on the software.
After finishing this book, you will be able to develop and run Jakarta EE 10 programs
of mid- to high-level complexity.
xix
Introduction
Source Code
All the source code in this book can be found at github.com/Apress/pro-jakarta-ee10.
xx
PART I
Development Workflow
Proposal
CHAPTER 1
Installing a Development
Server
This book uses GlassFish version 7.0.1 as a Jakarta EE server, although I try to avoid
vendor lock-in, so that, unless otherwise noted, you can test all the examples on different
Jakarta EE servers.
For the Eclipse IDE, there is a GlassFish plugin called GlassFish Tools, which you can
use if you want to. I don’t use it in this book for several reasons. First of all, the plugin
can have issues with your Eclipse installation. Second, if you don’t use the plugin and
instead use a terminal to start and stop the server and then use a build tool like Gradle to
install and uninstall Enterprise applications, you are already close to what you need for
integration testing and production setups. Third, it is easier to switch between different
Jakarta EE servers and different IDEs. Fourth, you don’t have to learn how to use that
plugin, including any peculiarities that might arise.
So for now, simply download and install the GlassFish server, version 7.0.1, from this
location:
https://glassfish.org/download.html
Note GlassFish 7.0.1 runs on JDK 11 through 19. You can try higher JDK
versions for GlassFish 7.0.1, but they might not work.
3
© Peter Späth 2023
P. Späth, Pro Jakarta EE 10, https://doi.org/10.1007/978-1-4842-8214-4_1
Chapter 1 Installing a Development Server
AS_JAVA=/path/to/your/sdk
You can enter this line on top of the GLASSFISH-INST/bin/asadmin file, after the
#!/bin/sh preamble. That way, you don’t have to enter it each time you start a new
terminal.
Even without any Jakarta EE server applications installed, it should be possible to
start the server from a console. Enter the following:
cd GLASSFISH-INST
bin/asadmin start-domain
If you open a browser window at http://localhost:4848, you can see the web
administrator frontend (the admin console); see Figure 1-1.
4
Chapter 1 Installing a Development Server
If you want to use a different port, you can change it in the admin console by
choosing Configurations ➤ Server-config ➤ HTTP Service ➤ Http Listeners ➤ Admin-
listener. You can also make this change via the terminal:
(Type this on one line when the server is running.) Then restart GlassFish and add
the -p 4444 option to the asadmin invocations.
set AS_JAVA=C:\path\to\your\sdk
5
Chapter 1 Installing a Development Server
chdir GLASSFISH-INST
bin\asadmin start-domain
The server should start and the console output should look similar to this:
...
Admin Port: 4848
Command start-domain executed successfully.
cd GLASSFISH-INST
bin/asadmin --debug start-domain
https://marketplace.eclipse.org
I nstalling Eclipse
Eclipse comes in several variants. To download any of them, go to
https://www.eclipse.org/downloads/
This book uses the Eclipse IDE for Enterprise Java Developers variant.
Note If you choose to download the installer, you will be later asked for the
variant. To select the Enterprise variant from the start, click the Download
Packages link and choose the Enterprise version on the next page.
7
© Peter Späth 2023
P. Späth, Pro Jakarta EE 10, https://doi.org/10.1007/978-1-4842-8214-4_2
Chapter 2 Creating and Building Projects with Eclipse
This book uses Eclipse version 2022-09, but you can use higher versions. Just
remember that if you run into trouble without an obvious solution, downgrading to
Eclipse 2022-09 is an option.
Use any installation folder suitable for your needs. Plugin installations and version
upgrades go into that folder, so make sure you have appropriate file access rights. On my
Linux box, I usually put Eclipse in a folder called:
/opt/eclipse-2022-09
(or whatever version you have). I make it writable to my Linux user, as follows:
cd /opt
USER=... # enter user name here
GROUP=... # enter group name here
chown -R $USER.$GROUP eclipse-2022-09
This changes the ownership of all files of the Eclipse installation, and it makes sense
for a one-user workstation. If instead you have different users for Eclipse, you can create
a new group called eclipse and allow write access to that group:
cd /opt
groupadd eclipse
chgrp -R eclipse eclipse-2022-09
chmod -R g+w eclipse-2022-09
USER=... # enter your username here
usermod -a -G eclipse $USER
The chgrp ... command changes the group ownership and the chmod ...
command allows write access for all group members. The usermod ... command adds a
particular user to the new group.
Note You need to be root for these commands. Also note that the usermod
command does not affect the currently active window manager session on the
PC. That means you must restart your system or, depending on your distribution,
log out and log in again for that command to take effect.
8
Chapter 2 Creating and Building Projects with Eclipse
As a last step, you can provide a symbolic link to the Eclipse installation folder:
cd /opt
ln -s eclipse-2022-09 eclipse
This makes it easier to switch between different Eclipse versions on your system.
On a Windows system, the installer sets the access rights for you and it is usually
possible for any normal user to install plugins. This, however, depends on the Windows
version and your system’s configuration. In a corporate environment, you can configure
more fine-grained access rights using Window’s own access rights management. This
could include not allowing normal users to install plugins or upgrades and creating
superusers for administrative purposes.
Configuring Eclipse
Upon startup, Eclipse uses the default Java version installed on your system. If it cannot
find Java or if you have several Java versions installed, you can explicitly tell Eclipse
which Java to choose. To this aim, open the ECLIPSE-INST/eclipse.ini file and add the
following line:
-vm
/path/to/your/jdk/bin/java
...
openFile
--launcher.appendVmargs
-vm
/path/to/your/jdk/bin/java
-vmargs
...
The format of the eclipse.ini file depends on your Eclipse version. Visit https://
wiki.eclipse.org/Eclipse.ini for the correct syntax. On that site, you will also find
precise instructions for specifying the Java executable path. The syntax I show here is for
Eclipse 2022-09.
9
Chapter 2 Creating and Building Projects with Eclipse
...
-vm
C:\path\to\your\jdk\bin\javaw
...
Adding Plugins
Eclipse can be extended by many useful plugins. Some of them are necessary for your
development, and some just help improve your development workflow. This book
doesn’t use too many extra plugins, and I provide plugin installation instructions when
they are needed.
As an exception, you now learn how to install a plugin for Groovy language support.
You will use Groovy as a scripting language for various purposes throughout the book. In
your browser, navigate to
https://marketplace.eclipse.org/content/
groovy-development-tools
10
Chapter 2 Creating and Building Projects with Eclipse
(ignore the line break), find the Install badge, and drag and drop it on the Eclipse
window (see Figure 2-1).
As is usually the case for Eclipse plugins, you have to acknowledge the license terms
and select the features. For the features, you can accept the default selection.
In previous versions of Eclipse, to use Gradle as a build tool, you needed a Gradle
plugin. However, with Eclipse 2022-09, this plugin is included, so no additional actions
are required here.
Note In the beginner’s book for Jakarta EE development, I used Maven as a build
tool. It is not a contradiction to now switch to Gradle. Maven and Gradle use similar
concepts and Gradle even knows how to import Maven projects. Also, it is a good
idea to be familiar with both build frameworks.
11
Chapter 2 Creating and Building Projects with Eclipse
package book.jakartapro.restdate;
import java.time.ZonedDateTime;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
**
* REST Web Service
*/
@Path("/d")
public class RestDate {
@GET
12
Chapter 2 Creating and Building Projects with Eclipse
@Produces("application/json")
public String stdDate() {
return "{\"date\":\"" +
ZonedDateTime.now().toString() +
"\"}";
}
}
Eclipse will complain about the imported classes because you haven’t told it where
to find them. As a remedy, open the build.gradle file and, inside the dependencies { }
section, add the following:
implementation 'jakarta.platform:' +
'jakarta.platform:jakarta.jakartaee-api:10.0.0'
Save the file and choose Gradle ➤ Refresh Cradle Project from the project’s context
menu. The error markers from Eclipse should now disappear.
You can explicitly tell Gradle to use the Java compiler version 1.17. To this aim, open
build.gradle and add the following underneath the plugins { } section:
plugins {
...
}
sourceCompatibility = 1.17
targetCompatibility = 1.17
package book.jakartapro.restdate;
import org.junit.Test;
import static org.junit.Assert.*;
For any build task, the unit test will be executed by default. Gradle knows how to do
that without further configuration, just because you placed the test classes in the src/
test/java folder.
Now you need to let your RESTful application go to a WAR file, and for this aim, you
need to add a deployment descriptor. You could avoid this by adding more annotations,
but I personally like having a central configurations file, so that a web application’s
configuration is not splattered throughout the sources. Generate a folder called src/
main/webapp/WEB-INF and add a file called web.xml to that folder:
In the same WEB-INF folder, add a beans.xml file. This is necessary to configure CDI
(Context and Dependency Injection):
You need one more deployment descriptor that’s server product-specific. For
GlassFish, you need a file called glassfish-web.xml with the following contents:
Note If you are not deploying to GlassFish and instead are using a different
Jakarta EE server, consult the server’s documentation as to which server-specific
deployment descriptors are needed.
The interesting part of the story begins now. You need to tell Gradle how to build
a WAR from that and how to deploy it on a server. You first need to add a WAR plugin.
Open the build.gradle file and enter id 'war' inside the plugins { } section:
plugins {
id 'war'
}
Choose Gradle ➤ Refresh Gradle Project from the project’s context menu.
To build the WAR, open the Gradle Tasks view (choose Window ➤ Show View ➤
Other... to open it if you can’t find it). Then right-mouse-click Build ➤ Build and select
Run Gradle Tasks. The build task performs the unit tests and creates the WAR file. You
can find the result in the build/libs folder.
15
Chapter 2 Creating and Building Projects with Eclipse
Caution Eclipse by default installs a filter to hide the Gradle build folder in the
Project Explorer. To remove that filter, click the gray triangle tool in the header area
of the Project Explorer, select Filters and Customization... and uncheck the Gradle
Build Folder entry.
To deploy the WAR file on the server, you must first define some properties. Create
the gradle.properties file in the project root and add the following, substituting your
server’s path:
glassfish.inst.dir = /PATH/TO/YOUR/GLASSFISH/SERVER
glassfish.user = admin
glassfish.passwd =
Also replace user and passwd according to your needs—change user to admin and use
an empty password belong to a vanilla installation. If you use Windows, make sure you use
double backslashes \\ instead of single ones for the path (since this is a Java properties file).
Next, add custom deploy and undeploy tasks to the build.gradle file. Open it and
add the following:
16
Chapter 2 Creating and Building Projects with Eclipse
temp.delete()
}
}
task undeployWar(
description:">>> RESTDATE undeploy task") {
doLast {
def FS = File.separator
def glassfish =
project.properties['glassfish.inst.dir']
def user = project.properties['glassfish.user']
def passwd = project.properties['glassfish.passwd']
temp.delete()
}
}
17
Chapter 2 Creating and Building Projects with Eclipse
Both tasks specify a doLast { } block, which is a requirement for the tasks
actually being executed in the task execution phase. If you didn’t use such blocks, the
corresponding code would be executed inside a configuration phase, regardless of
whether the task is actually being executed or not. As you might guess, there is also a
doFirst { } block possible. For the purposes here, you can use either of them.
The coding is for Linux as a development box. The change needed to run these
same tasks under Windows is actually quite small. You only need to add a cmd /c to the
beginning of the def proc = """... string:
If you want to use Windows, make the same change to both new tasks!
The code itself uses the Groovy language as an idiom. The project.properties
addresses the properties defined in the gradle.properties file. The rest is Groovy code,
with the .execute running a system shell command. The temporary file is needed,
because for the asadmin command, it is only possible to hand over the password by
specifying a specially tailored password file. The << writes into that file, yielding the
necessary syntax as given by the asadmin specification.
In the Gradle Tasks view, go to the menu (inside the toolbar of the view) and check
Show All Tasks. You can now run the deploy and undeploy tasks from that view. Navigate
to Other and double-click either of the new custom tasks. The standard and error output
is printed to the console view. Make sure the server is running before you deploy or
undeploy the application.
Note For any other Jakarta EE server, the deployment procedure will be very
similar as seen from the build scripts. Because Groovy runs on top of Java, you
can do a lot of other fancy things during deployment and undeployment. Besides,
a task may easily call any other task and, by virtue of Gradle plugins, a lot of
additional functionality is possible here.
18
Chapter 2 Creating and Building Projects with Eclipse
Note To streamline development and save time deploying applications, you can
also use the Gradle wrapper from a shell terminal. Go to the project’s directory and
then invoke ./gradlew deployWar to perform a build and then a deploy.
• Start typing the code and then press CTRL+SPACE. Eclipse will
show you suggestions for finishing your typing. For example, type
new SimpleDa and then press CTRL+SPACE. The list provided
will contain all the constructors for the SimpleDateFormat class.
Even better, you can shortcut that by typing new SiDF and pressing
CTRL+SPACE, because Eclipse will guess the missing lowercase
letters. An additional goody is that you don’t have to write the import
statements for classes and interfaces you introduce that way—Eclipse
will do the imports for you.
19
Chapter 2 Creating and Building Projects with Eclipse
• Let Eclipse do the imports for all classes not yet resolved by pressing
SHIFT+CTRL+O (think of O as “organize imports”).
• Format your code by pressing CTRL+ALT+F. This also works for XML
and other file types.
• Let Eclipse show you super- and subtypes by pressing F4 over a type
designator.
• If TODO is not enough fine-grained for you, you can add bookmarks by
right-mouse-clicking anywhere on the vertical bar on the left side of
the code editor. Bookmarks are listed in the Bookmarks view.
You didn’t specify this in the build.gradle file, because these are the locations
Gradle uses by default. By the way, the Maven build framework uses these same places.
There are good reasons to deviate from this layout, though. The most prominent reason
is you that you have a prescribed layout because a version control system checkout
dictates it. It is not hard to tell Gradle where to look for files in such cases. In the build.
gradle file, simply add the following:
20
Chapter 2 Creating and Building Projects with Eclipse
sourceSets {
main {
java {
srcDirs = ['path/to/folder']
}
resources {
srcDirs = ['path/to/folder']
}
}
test {
java {
srcDirs = ['path/to/folder']
}
resources {
srcDirs = ['path/to/folder']
}
}
}
where you substitute the path/to/folder with your custom project layout folders.
The [ ... ] are Groovy language lists, so you can also place a comma-separated list
there to designate several folders, which will then be merged.
21
CHAPTER 3
Development with
NetBeans as an IDE
Most modern IDEs can fulfill your development needs, including Groovy and Gradle
support, versioning, compiling and running Java, and more. I could include more
“Using XXX as IDE” chapters and fill half of the book, but most IDEs follow similar
concepts, have a help functionality, and provide tutorials and examples. The path to a
development workflow usually follows these steps:
Installing NetBeans
Go to https://netbeans.apache.org/ and download NetBeans. Choose one of the
installers that suits your operating system. You can also install the binary version,
23
© Peter Späth 2023
P. Späth, Pro Jakarta EE 10, https://doi.org/10.1007/978-1-4842-8214-4_3
Chapter 3 Development with NetBeans as an IDE
something like netbeans-16-bin.zip, but then you have to manually set some
configuration settings that the installer otherwise does for you.
More installation options are described on the download page.
Note Contrary to Eclipse, the NetBeans IDE stores some settings in a USER_
HOME/.netbeans folder. Keep that in mind if you want to uninstall NetBeans or
reinstall it from scratch.
–– Java Application
Use this to create a library JAR that can be used with other projects.
–– Web Application
–– Multi-Project Build
This build creates a project with one or more sub-projects. This hap-
pens by using include directives inside settings.gradle. You can
specify the sub-projects while installing the root project, and NetBeans
will create one new project view per sub-project.
24
Chapter 3 Development with NetBeans as an IDE
–– Micronaut Project
Because it is enough for the purposes in this book, the following section uses the Java
Application type.
Multi-IDE Projects
Chapter 2 used a Gradle project style. Because you’ll do the same here for NetBeans, it
is extremely easy to migrate a project from Eclipse to NetBeans and vice versa. Do you
remember the simple RestDate project you created for Eclipse in Chapter 2? To move
that project to NetBeans, you simply copy the build.gradle, gradle.properties, and
settings.gradle files from ECLIPSE-PROJ (the project folder) to NETBEANS-PROJ, and
then do likewise for all the src files. See Table 3-1.
ECLIPSE-PROJ/ → NETBEANS-PROJ/
build.gradle → build.gradle
settings.gradle → settings.gradle
gradle.properties → gradle.properties
src/* → src/*
First create a Java project by choosing Gradle ➤ Java Application in NetBeans. Check
the Initialize Gradle Wrapper checkbox so the wizard will also generate a non-IDE (shell)
script set in the project. Then perform the copy operations shown in Table 3-1.
25
Chapter 3 Development with NetBeans as an IDE
Note NetBeans detects the file changes and automatically downloads the new
dependencies. This takes a minute or so, so give NetBeans some time to restore
the project setup. Error markers won’t disappear until everything is downloaded
and reconfigured.
The new project view in NetBeans will now look similar to Figure 3-1. After you start
the server, you can double-click the deployWar task to build and deploy the project.
In the rest of this book, you use Eclipse, but in this chapter you have seen that
migrating to and using a different IDE is easy.
26
CHAPTER 4
Note For client-side usage only, skip to the “Subversion Clients” and “Git
Clients” sections. Using Git and Subversion clients is well documented in manuals
and tutorials. The rest of this chapter is about installing corporate Subversion or
Git servers, which makes sense if you don’t want to host sources outside your
company.
27
© Peter Späth 2023
P. Späth, Pro Jakarta EE 10, https://doi.org/10.1007/978-1-4842-8214-4_4
Chapter 4 Git and Subversion
# SuSE
zypper install subversion
Unless the installation creates a subversion user and group, you can check this
by running cat /etc/group | grep subversion and cat /etc/passwd | grep
subversion. Then create a subversion user and group by entering the following:
As an example, you can create a repository for the RestDate project from Chapter 2:
28
Chapter 4 Git and Subversion
svn add *
svn commit -m "Init"
This creates a standard Subversion repository layout. The trunk is the main
development branch, branches contains all the branches, and tags is for tags. This is
the usual convention, but you are not obliged to follow it. It does help others understand
your versioning procedures better if you follow this convention.
Subversion provides different methods for clients to connect to repositories. The
following list shows a summary:
–– file:///
–– http://
–– https://
–– svn://
–– svn+ssh://
For several reasons, I highly favor the svn+ssh:// protocol. First of all, it is
straightforward and easy. There is no need for any other software to run on the server,
and you don’t need to spend time creating a bulletproof Apache installation, which is
necessary for http:// or https://, including maintenance. And you don’t have to use
the unsecured svn:// protocol access. Security is delegated to the very safe SSH access
29
Another random document with
no related content on Scribd:
antagonistic to our side of the case, if you would wish us to consider
—well, a compromise.”
He glanced at them. They were all regarding him earnestly; one or
two, it seemed, almost anxiously.
“Compromise!” he repeated, with incredulous scorn. “Compromise?
Make some sort of deal, a half-way trade, with Elisha Cook’s crew?
Is that what you mean? When they get one red cent from me they’ll
have to take it by main strength. Compromise be hanged! You fight,
do you hear? Fight—and lick ’em!”
It was half past eleven when he left the room. He had planned to
dine at the Ostable House, and drive home afterward, but dinner
would not be ready until twelve. He walked over to the hotel and,
because idling and thinking were not cheerful or amusing just then,
he decided to fill in the half hour by writing his reply to Seymour
Covell’s letter. He did write it, expressing some doubt as to his ability
to find a satisfactory position for his friend’s son immediately, but
extending a hearty invitation to the latter to visit him at Harniss. He
did not, however, follow Esther’s suggestion that that visit be delayed
until after her European trip had begun. He saw no reason for such
delay. Let the young fellow come at once, if he wanted to. What
difference did it make when he came?
“Send the boy along,” he wrote. “The sooner the better. And tell him
for me that he can stay as long as he likes. There’s room enough,
goodness knows. And the longer he stays the better chance I shall
have to look him over and decide what sort of job he will fit into,
when he gets ready to take it. Why don’t you come, yourself? A
month or so down here in the sand will blow some of that Chicago
soot out of your head. I always told you this was the healthiest place
on God’s earth. You come and I’ll prove it.”
After dinner, as he brought the span abreast the Ostable post office,
he pulled the horses to a halt and handed the letter to a citizen who
was standing on the platform.
“Here, mail that for me, will you?” he said. The citizen received the
letter as he might have received a commission from the governor.
“Yes, sir; yes, indeed, Cap’n Townsend,” he replied, with unction.
“Much obliged. And mail it right away. Don’t put it in your pocket and
forget it.”
“Forget it! I wouldn’t forget it for nothin’. No, sir!”
“Well, it is more than nothing, so I don’t want it forgotten.”
He waited until he saw the letter deposited in the mail slot in the
post-office door. Then he clucked to the span and drove on.
It was not yet four o’clock when he reached Harniss. It occurred to
him that Esther would not be at home when he got there; she would
have gone to that Welfare Society meeting, or whatever it was. He
did not feel inclined to sit alone in the library and think; memories of
that confounded Boston attorney’s “if” were still too clear to make
thinking pleasant. They angered him. What was the matter with the
crowd over there in Ostable? What had become of all the assured
complacency with which they had greeted him at similar
consultations of but a year ago? Losing their grit, were they? Letting
appeals and delays and all that sort of legal drivel get on their
nerves? The case was as surely his now as it was then. Flock of old
hens! With what delight would he, when the long-drawn-out mess
was ended and the decision his, pay them off and send them
packing. Bah!
He shook his head to drive away these symptoms of what he would
have called the “doldrums,” looked up and saw that he was nearly
opposite the Clark cottage. He would drop in on Reliance now, this
minute. She was always a first-class antidote for doldrums.
He hitched the span to the gnawed post before the post office and
walked around the buildings to the door of the millinery shop.
Reliance was in the shop, making tucks in a yard of ribbon.
“Hello, there!” he hailed, striding in and closing the door behind him.
“Well, how are things in the hat line? Thought I’d stop and see if you
could make Varunas a sunbonnet. He’s getting to be more of an old
woman every day he lives.”
Reliance looked up and smiled. “Hello, Foster,” she said. “You’re a
stranger. It’s been a long while since you honored us this way. I hope
a lot of folks saw you come in. It will be good for business. Sit down,
won’t you?”
He had not waited for the invitation. He sat in the chair usually
occupied by Miss Makepeace, which squeaked a protest, and tossed
his hat upon the top of the sewing machine.
“All alone?” he queried. “Where’s your first mate?”
“Abbie? Oh, she’s at home with a cold. She has been barkin’ and
sneezin’ around here for three days, so I told her to stay at home
and sneeze it through with a hot brick at her feet and a linseed
poultice on her chest. She’ll be over it pretty soon. How are you?”
“All right. Where’s the town superintendent?”
“Who?... Oh, I suppose you mean Millard. He is out, too. He won’t be
back for an hour.”
“How do you know he won’t?”
“Because he ought to be back now. Well, Foster, how do you like the
prospect of being alone again in that big house of yours? Be a
harder pull than ever for you, won’t it?”
“You bet!... But, say,” leaning back in the chair and thrusting his
hands into his pockets, “how did you know I was going to be alone?
Isn’t there such a thing as privacy in this town?”
“Not much. I should think you would have learned that by this time.
There, there! don’t get mad. I don’t believe it is generally known yet.
Esther told me herself, but she told me not to tell. She said you
asked her not to talk about it much yet.”
“Um-hum. Yes, I did. However, she can talk about it now as much as
she wants to. She will be sailing in ten days or so. I only wish I was
booked for the same ship.”
Reliance held up the ribbon, measured the latest tuck and then
folded another.
“I was a little surprised when she said you wasn’t,” she observed.
“The lawsuit is keepin’ you here, she told me.”
“Yes, blast the thing! There, don’t talk about that. I’ve just come from
a lawyers’ meeting and I have had enough for the present.... Yes,
Esther is going across the water. She’ll stay there, too—until I figure
it is good judgment to bring her home.”
Miss Clark looked up, then down. She nodded.
“I see,” she said. “You had to come to it, after all, didn’t you. I
suppose likely I was the one who put the idea in your head, so I
ought to take the responsibility.”
“No, you needn’t. I’ll take it myself. I should have thought of some
such thing, sooner or later, without your help. But I’m much obliged
for the reminder, just the same.”
Again she looked up.
“Too much company up your way, wasn’t there?” she suggested.
“Too darned much, of the kind. That young Griffin has got as much
cheek as his whole family together. And that doesn’t mean a little
bit.... Humph! I’m a long sea mile from being sure that I ought to
have let him come there in the first place. You were responsible for
that, too, Reliance. Remember?”
“Of course I remember. But you must remember that I told you
unless he and Esther were different from most any young couple I
ever heard of they would find ways to see each other anyhow, and it
might be best to let them meet where you were within hailin’
distance. I think I was right—even yet.”
“What do you mean by ‘even yet’?”
“Nothing. Nothing now, at any rate. Foster, how far has this affair of
theirs gone? Are they—well, do you think they are any more than
just good friends?”
“Eh,” sharply. “Any more? Now why do you ask that. If I thought—”
“Ssh! What do you think?... Careful of that chair! That’s Abbie’s pet
rocker.”
He had thrown himself back in it with a violence which threatened
wreck and ruin.
“How should I know what to think?” he growled, moodily. “He comes
three times a week and stays till eleven o’clock. And they sit alone in
the sitting-room and talk, talk, talk about— Oh, I don’t know what
they talk about! The price of quahaugs, maybe.”
“Maybe.” She glanced at him and smiled. “You go away and leave
them there together, then, do you, Foster?” she said. “Well, that is
pretty nice of you, I must say. And, perhaps, kind of hard to do, too.”
He stirred uneasily and scowled. “Did you think I was likely to hang
around and listen at the keyhole?” he demanded.
“Not the least little bit. I know you.... Well, let me ask you a plain
question. Suppose she and Bob Griffin did get to be something more
than friends; what would you do then?”
His big body straightened. “Do!” he repeated. “If you mean what
would I do if she proposed to marry that scamp. I’ll tell you without
any if, and, or but. I’ve told you before. I wouldn’t let her do it.”
“She might do it without your lettin’.”
“Then, by the Almighty, she could do without me, too. If she left my
house to marry him she should stay out and never come back.... But
she wouldn’t. She isn’t that kind.... Here! what the devil are you
shaking your head about?”
“Oh—well, I was just thinkin’.”
“Stop thinking, then! Don’t be a fool, Reliance! Why, that girl has told
me fifty times that she thinks as much of me as if I was her own
father. She talks about how kind I’ve been to her and how she never
can pay me back and all that. Do you suppose that is all lies? Do you
think she’d throw me over for that—that Cook calf? Don’t be a fool, I
tell you. Look here! What is this all about? Do you want her to marry
him?”
A slow shake of the head prefaced Reliance’s answer. And that
answer was gravely spoken.
“No, Foster,” she said. “I don’t.”
“Of course you don’t, unless you are a fool. And, if every fool in
creation wanted it, she shouldn’t do it.”
Reliance paid no attention to this declaration. She had dropped the
ribbon in her lap and now she spoke earnestly and deliberately.
“No, Foster,” she repeated. “I don’t want her to marry Bob Griffin. He
seems to be a fine young man and a good one, but the reason why I
don’t want that marriage isn’t on account of what he is, but who he
is. This whole matter has worried me a lot. It worries me now. I can’t
see anything but trouble ahead for everybody if it goes on.”
“Humph! You don’t need a spyglass to see that. Well, it isn’t going
on. It will stop inside of two weeks. Once get the Atlantic Ocean
between them and it will stay between them until they both forget—
until she does, anyhow. He can remember until he is gray-headed if
he likes, it won’t do him any good.”
She had picked up her sewing again, but now she looked up from it
with, or so he thought, an odd expression. Since the beginning of
their conversation he had been conscious of something unusual in
her manner. Now there was a peculiar questioning scrutiny in her
look; she seemed to be wondering, to be not quite sure—almost as if
she were expecting him to say something, he could not imagine
what.
“Why are you staring at me like that?” he demanded, irritably. “What
is it?”
She did not reply to his question, but asked one of her own, one
quite irrelevant and trivial, so far as he could see.
“Have you heard any news lately?” she inquired.
“News? What kind of news?”
“Oh, any news about—well, about any one we know?”
“No.... See here, what do you mean? Have you heard something?”
Again she did not answer. “Foster,” she said, sewing steadily, “I don’t
want you to get the idea from what I just told you about my feelin’s
that I think Esther’s marryin’ Bob Griffin would be the very worst
thing that could happen.... Wait! let me finish. I don’t think it would be
a wise thing, considerin’ the way you and Mr. Cook hate each other
and the way you both would be likely to act if those young folks took
the bit in their teeth and decided to marry, anyhow. And if Esther and
he can forget I should say it was best they did, best for all hands. But
if they care enough for each other so that they can’t forget and will
be miserable and sorry all their days, then I honestly believe they
should go through with it. After all, they are young, they have got
their lives to live. It is for them, and nobody else, to really decide how
they shall live ’em. That is the way I feel and I guess you ought to
know it.”
He rose from the rocker. He was angry, so angry that he could
scarcely trust himself to speak.
“Yes,” he growled, with savage sarcasm, “you are right in that.
Mighty well right! I guess it is high time I knew it. So you have been
putting her up to—”
“Stop! I haven’t put her up to anything. She and I have hardly
mentioned Bob Griffin’s name for a month. If she had asked me what
I thought about it I should have told her what I just told you, that the
less she saw of him the better. And when she told me you were
sendin’ her abroad I knew why you were doin’ it and I was glad. It, or
somethin’ like it, was what I hoped you would do. In fact, you just
now hinted that I was the one who put doin’ it into your head. Don’t
make silly speeches that you know ain’t true, Foster Townsend.”
This appeal to common sense and justice had some effect. He took
a stride or two up and down the room and when he spoke his tone
was a trifle less fierce although just as determined.
“You have said enough, anyhow,” he declared. “Now you hear me
say this: She isn’t going to marry that cub. She isn’t. If taking her to
Paris and keeping him out of her sight doesn’t cure her then I’ll try
something that will. I’ll—by the Lord Almighty, if worst comes to worst
I’ll—I’ll kill him before I let one of his gang take her away from me.”
She laughed a little. “Killin’ him would be a fine way to keep her with
you, wouldn’t it?” she observed. “If you will only behave like a
sensible man, and talk like one, I’ll tell you something else,
something you will know soon but that perhaps you’d better know
now.”
He was paying no attention. Now he turned to her, his face drawn
with emotion and his voice shaking.
“Reliance,” he cried, “you don’t know—by the Lord, you don’t know
what that girl has come to be to me. I—I love her as much as I did—
as I did Bella, my own wife, when she was living. I swear I believe
that’s so. She’ll marry somebody some day; I am reconciled to that—
or I try to be. It’s natural. It is what is bound to happen. But I’ll have
something to say about who her husband shall be. I know men and
it’s got to be a mighty fine man who can satisfy me he’s the right
husband for her. A good-for-nothing who wastes his time painting
chromos—a boy without any business sense—”
“How do you know he hasn’t got any business sense?”
“Would he be a picture painter if he had? And a Cook! Good Lord!
think of it! a Cook!... There! What’s the use talking to you? You are a
sentimental old maid and all that counts with you is the mush you
read in the fool books you get out of the library. If you loved that girl
the way I do—”
She had risen now and she broke in upon him sharply.
“I do,” she vowed. “I love her as much as you do and more, perhaps.
She lived with me years longer than she has with you and I love her
as much as you ever dreamed of doin’. Yes, and a whole lot more
unselfishly—that I know, too.”
“But, Reliance, to give her up to—”
“Oh, be still! I gave her up to you, didn’t I? Do you think that wasn’t a
wrench?”
He could not deny it, for he knew it to be true. He shrugged and
picked up his hat.
“Good-by,” he said.
She called his name.
“Foster—wait!” she ordered. “Now I am goin’ to tell you somethin’ it
is plain you haven’t heard. I wonder Esther hasn’t told you. She must
know it. Probably she will tell you soon, she certainly ought to. There
was a man here this mornin’ from Denboro. His name is Pratt, he
peddles fish, probably you know him. Well, he told me he heard last
night at the Denboro post office that Bob Griffin was plannin’ to go to
Paris to study paintin’. His grandfather had said he might and he was
leavin’ almost right away, inside of three weeks, anyhow.... Perhaps
you see what that is likely to mean, so far as keepin’ him and Esther
apart is concerned.”
He stared at her incredulously; he could not credit the story.
“Bosh!” he snorted. “I don’t believe it. It’s all a lie. They’ve got it
mixed up. Somebody has heard that Esther is going, and of course
some of them know he has been coming to the house, and so
they’ve pieced together a gaff tops’l out of two rags and a rope’s
end, same as they generally do.”
“No. That is what I thought at first, but it isn’t that. Pratt heard about it
again from the Cooks’ hired girl and she heard Bob and his
grandfather talkin’ it over at the dinner table. It is true, he is goin’.
And of course it is perfectly plain why he is goin’.... Now, Foster,
what will you do about it?”
He did not answer immediately. He stood before her, his florid face
growing steadily redder. Then he struck his right fist into the palm of
his left hand.
“That is why she was so full of good humor this morning,” he
muttered. “He told her last night and— That was it!... Good-by.”
“Wait! Wait, Foster! What are you goin’ to do?”
“Do! I don’t know yet, but you can bet your life something will be
done.”
“Oh, Foster, you must be awfully careful. If you aren’t—”
“Careful! I tell you one thing I’ll be mighty careful of. I’ll be careful to
call off this Paris business. That is over and done with, so far as she
is concerned. She stays here with me. As for him—well, I’ll attend to
him.”
“But, Foster, you must take care what you do. If you’ll only listen to
me—”
He was at the door.
“No!” he shouted. “I’ve listened too long already. Listen to you! Why,
it was you that put me up to sending her away. Humph! And a fine
mess that has got us all into, hasn’t it! No! From now on, I’m handlin’
this affair myself and I don’t want any orders or advice from anybody.
You keep your hands off the reins. We’ll see who wins this case. The
rascal!”
She followed him to the step and stood looking after him, but he did
not look back. She saw him climb to the carriage seat, crack the
whip over the backs of the span—the horses were astonished and
indignant, for they were not used to such treatment—and move
rapidly off up the road. Then she went back to her sewing, but her
mind was not upon her work; she foresaw nothing ahead but trouble,
trouble for those in the world for; whose happiness she cared most.
CHAPTER XIV
FOSTER TOWNSEND drove straight home, turned the horses and
carriage over to the care of Varunas and went into the house. There,
in the library, with the portières drawn and the hall door tightly
closed, he sprawled in the big chair and, chewing an unlighted cigar,
set himself to the task of facing this entirely unforeseen setback. His
carefully laid plan had gone to smash; that fact could not be dodged.
Paris with Esther in Jane Carter’s company, three thousand miles
away from young Griffin, was one thing. Paris, with those two
together, and he, Townsend, on this side of the water, was quite
another. No, if it was true that Griffin was going there, then Esther
was not. So much was certain.
It was a galling conclusion, his pride winced under it. To think that a
boy in his twenties had forced a wily, shrewd veteran of his years
and experience to back water was almost too much to bear. It was
humiliating and the more he pondered over it the angrier he became.
The plan had been a good one. He had given it careful consideration
before he adopted it. He had tried to think of every possible
objection, but such a one as this he would have considered beyond
the bounds of possibility. And yet it was so simple. How that Griffin
cub must be chuckling in his sleeve. Of course he had seen through
the strategy behind the move and with one move of his own had
checkmated it. Esther was being sent to Paris to get her away from
him, was she? All right, he would go there, too. Easy enough!
Foster Townsend’s big body squirmed in the leather chair. He was
tempted, almost resolved, to go straight to Bob Griffin, wherever he
might be, even in his grandfather’s house, and have it out between
them, man to man—or man to boy. The prospect of an open battle
was appealing. And he was practically sure that Elisha Cook would,
for once, be fighting on his side. Elisha would, he was willing to bet,
be as firmly set against a marriage between a Cook and a Townsend
as he was, although their objections would be based upon exactly
opposite grounds. It would be amusing, at least, to watch his former
partner’s face when he learned why his grandson proposed to leave
him—and for whom. For Bob had not told, of course. Humph!
Between them they could give that smart young rooster a happy half
hour.
It would not do, though; no, it would not do. Mistakes enough had
been made and he, Townsend, must not make another. Whatever
was done now must be right and he could not afford to be too hasty.
At any rate, the first thing to be done was to think of good excuses
for canceling Esther’s European trip. He had little time for that and
he must act quickly.
So, setting his teeth, he endeavored to forget anger, hurt pride, and
all the rest of the non-essentials. The checkmating was partly his
own fault. He had taken a woman’s advice, instead of depending
upon his own judgment, and was paying for it. It was Reliance Clark
who had put into his head the fool notion of sending his niece away.
Neither she, nor any one else, should put another there.
Henceforward he would, as he had told her, handle the reins. And
the race was by no means lost.
He was in his room on the second floor, writing a letter, when he
heard Esther’s voice in the library.
“Uncle,” she was calling. “Uncle Foster, where are you?”
“Here I am,” he answered, “I’ll be down in a minute.”
He signed the letter he had written and addressed the envelope to
Mrs. Jane Carter in Boston. He had given her orders, short, sharp
and compelling. She was not to waste time asking questions. She
was to write what he told her to write and do it at once. And when he
saw her he would tell her why. He was as sorry as she could be that
the affair had turned out as it had.
Esther’s good humor at supper time was as pronounced as it had
been in the morning. She was nervous, however; he could see that.
He did his best to appear good-humored also. When they were in the
library together the cause for her nervousness was disclosed. She
told him at once about Bob Griffin’s going to Paris to study art. His
reception of the news was far different from what she feared it might
be. He appeared to regard it as a good thing for Bob to do.
“Why, Uncle Foster!” she exclaimed. “Aren’t you awfully surprised? I
was, when Bob told me, last evening. I had no idea he even thought
of such a thing—for the present, at least.”
Her uncle rubbed his beard. “He is studying to paint pictures, just as
you are studying to sing,” he observed. “According to what I hear,
they teach both those things better over yonder than they do here. I
don’t wonder he wants to go. Good idea, I should say. When is he
going?”
“Very soon. In a few weeks, he says. His grandfather has said that
he might.”
“Has, eh? Humph! Elisha must have more money than I thought he
had. Paying lawyers can’t be as expensive for him as it is for me.
Or,” with a twist of his mouth, “perhaps he doesn’t pay ’em.”
Esther hastened to explain. “Bob has some money of his own,” she
said. “His grandfather won’t have to pay any of his expenses.”
“Oh!... Oh, yes, yes! He’s rich, then, as well as handsome—and
smart?”
He had not meant to emphasize the “smart,” but he did, a little. She
noticed it.
“Bob is smart,” she declared. “Every one says he is.”
“And I suppose he lets ’em say it. Well, maybe he is as smart as he
thinks he is. We’ll see how it turns out.”
“What turns out? His painting, do you mean? Oh, I am sure he is
going to be a wonderful artist. Just look at that portrait he did of me,
with scarcely any study at all.”
He did not look at the portrait and he talked very little during the
evening. Esther did not mind. She was relieved that he had not
shown resentment when told that Griffin was to be in Paris during
her own stay there. Well, at all events, this proved that Nabby
Gifford’s insinuation had not a word of truth behind it.
Nothing of moment happened in the Townsend household until
Tuesday morning. Then, when breakfast was over, her uncle called
her into the library. He had a letter in his hand and there was a
serious expression on his face. He asked her to sit down, but he did
not sit. Instead he paced up and down the floor, a sure sign that he
was much disturbed in mind.
“Esther,” he said, turning toward her, “I’ve got some bad news for
you. I’m afraid you will think it is pretty bad, when I tell you what it is.
I got a letter yesterday. I didn’t say anything about it then. I always
think the morning is the time to face bad news; you have all day to
get used to it in and consequently you can sleep better when
bedtime comes.... Well, we might as well get it over. Esther, it looks
as if you wasn’t going abroad, after all—now, I mean.”
She caught her breath. She had been trying to surmise what the bad
news might be, but she had not thought of this.
“Not going abroad!” she repeated, aghast. “You mean I am not going
to Paris?”
He nodded. “That is just about what I do mean, I guess,” he affirmed.
“It looks as if you couldn’t go—for the present, anyhow. Of course, by
and by, later on, you and I will go together, same as we used to plan;
but your cruise with Mrs. Carter is off, I’m afraid.... It is a big
disappointment for you, isn’t it? Yes, I can see that it is.”
Any one could have seen it. The expression upon her face was
sufficient indication of the shock of that disappointment. He, himself,
was anything but happy. This thing he was doing was for her good;
some of those days she would realize that and be grateful to him, but
now—well, now the doing of it made him feel meanly guilty. He put
his hand on her shoulder.
“Sorry, Esther,” he said, with a shake in his voice. “I’m sorry enough
things have turned out as they have, but—well, it is for the best, I
guess. Yes,” with a nod of stubborn determination, “I know it is. Now,
don’t feel too bad, my girl. Try and brace up. Come!”
She was trying, but it was hard work. If he had told her this before
Bob had told her of his going she would not have minded so much.
Since then—and particularly since the time when she had told him of
Bob’s proposed trip and he had received the tidings with such
complacency—she had thought of little else but the wonderful days
to come.
He patted her shoulder.
“Brace up, Esther,” he said. “It isn’t off for good, remember. You and I
will go over there together by and by, just as sure as I live. It is just
put off for the present, that’s all.”
“But why, Uncle Foster?” she faltered. “Why? What has happened?”
He told her Mrs. Carter had written saying she could not go. Various
things had turned up—he was not specific concerning the nature of
these things—which made it impossible for her to leave her Boston
house for some months at least.
“It’s too late to get any one else,” he explained, gently. “And,
besides, I don’t know of any one else I could trust to pilot a cruise
like that with you aboard. We must face it as it is. There are lots of
disappointments in life; I have had my share of them. And pretty
generally,” with another dogged nod, “they turn out to be for the best
in the end. You just try and believe this one will turn out that way.”
She told him that she would try, but her tone was so forlorn that his
feeling of meanness and guilt increased. And her next speech
strengthened them still more.
“I won’t be a baby, Uncle Foster,” she bravely answered him. “I know
you are as sorry as I am. It isn’t your fault at all, of course. And,” with
an attempt at a smile, “I know, too, that I ought to be glad for your
sake. I have never felt right about leaving you.”
He shifted uneasily and gave the “cricket” before the easy-chair a
kick which sent it sliding across the floor.
“Don’t talk that way,” he growled. “I—Humph! Well, I’ll make this all
up to you before we finish, I’ll swear to that.... Say,” with a sudden
inspiration, “I tell you one thing we’ll do! I shall have to go to
Washington one of these days and I’ll take you with me. We’ll have a
regular spree along with the President and the rest of the big-bugs.
That will be something to look forward to, anyhow.”
Perhaps, but, compared to that toward which she had been looking,
it was a very poor substitute. And all the rest of that day her
disappointment increased rather than diminished. She dreaded
Bob’s call that evening. Poor fellow! he would be as disappointed as
she was. But he must go, just the same. He must not sacrifice his
opportunity for travel and study because hers was postponed. He
must go as he had planned. She should insist upon that.
There were other thoughts, too, but she tried not to think them. It had
seemed to her that her uncle’s reasons—or Mrs. Carter’s reasons—
for canceling the trip had been rather vague and not altogether
sufficient to warrant upsetting the plans of so many people. And the
decision was so sudden. Her last letter from the lady had contained
not a hint of change. It was full of enthusiastic anticipation. Her uncle
—
She resolutely refused to think along that line. Her uncle had felt so
badly when he broke the news to her. She remembered the tremble
in his voice. No, she would not be so disloyal or ungrateful as to
suspect.... Never mind Nabby’s suggestion. Nabby was what her
employer sometimes called her, a clucking old hen.
She would have gone to her Aunt Reliance and sought consolation
there, but the Welfare Society met again that afternoon and she felt
bound to attend the meeting.
Bob Griffin, when he came that evening, was in such a glow of high
spirits that he could scarcely wait for Foster Townsend to leave the
library before voicing his feelings. Townsend appeared to notice his
condition.
“You look fit as a fiddle to-night, seems to me,” he observed.
“Counting the days till you get to Paris, I suppose; eh? Well, I don’t
wonder. Pretty big thing for a young fellow.”
Bob was a little surprised.
“Oh, then Esther has told you about it?” he asked.
“Um-hum. She told me.”
“What do you think of the idea, sir? Of my going there to study, I
mean?”
“Think it is just what you should do. If you’ve made up your mind to
paint for a living then the better painter you learn to be the better
living you’ll make—if you can live at all at that job.... Oh, yes, yes!”
he added, before either of the pair could reply. “I suppose likely you
think you can. And you may be right. I don’t know about such things.”
The moment the hall door had closed behind him Bob turned to
Esther and seized her hands.
“Only a few more weeks,” he announced, triumphantly. “In less than
a month you and I will be sauntering down the Champs Elysées or
the ‘Boul Mich’ or somewhere. I have engaged my passage. I am
going on the Lavornia. She sails from New York just eight days after
your ship leaves. We shan’t be separated long, shall we?”
She withdrew her hands from his and shook her head.
“Bob,” she said, “I have dreaded seeing you to-night. I have
something to tell you that you won’t like at all. I don’t like it either, but
it can’t be helped. All our plans are changed. I am not going to
Paris.”
He stared. “Not going to Paris?” he repeated. “Where are you
going?”
“Nowhere, for the present. I am going to stay here in Harniss.... Wait!
Please wait, and I’ll tell you all about it.”
She told him of the letter from Mrs. Carter and her uncle’s decision
that the European trip must be postponed. He would have
interrupted a half dozen times, but she begged him not to.
“So you see, Bob,” she said, in conclusion, “you and I won’t meet
over there as soon as we expected. I can’t go now, although perhaps
some day I shall. I am glad you are going. I am awfully glad of that.”
He had risen and was standing before her. His lips were set and he
was frowning. Now he laughed scornfully.
“Esther,” he protested, “don’t! Don’t be silly. You can’t really think I
would go if you didn’t.”
“Why, of course I do. You must go. Certainly you are going.”
“Certainly I am not. Huh! I should say not! If you don’t go neither do I.
If they make you wait I’ll wait, too.”
“Bob! Oh, please, Bob, be reasonable. Think of what it means to
you. Your chance to study, to go on with your painting, to get ahead
in the world! Do you suppose I shall let you give up your opportunity
just because mine is postponed for a while? Did you think me as
selfish as that?”
He shook his head. “You bet I don’t go!” he muttered. “Indeed I don’t!
They don’t get me away from you as easily as that comes to.”
“Bob!... What do you mean by that? No one is trying to get you away
from me.”
Again he laughed. “Oh, Esther,” he said, impatiently, “don’t let’s
pretend. You know what this means as well as I do. It is as plain as
print. Captain Townsend—”
“It isn’t his fault. It is Mrs. Carter who can’t go. That is the reason.”
“Esther! Can’t you see? Oh, but of course you do! This Mrs. Carter is
doing what your uncle has told her to do. She has called it off,
trumped up the excuse, because he ordered her to do it.”
“Bob!” sharply. “Stop! You mustn’t say such things. You know they
aren’t true. Why, it was Uncle Foster who persuaded Mrs. Carter to
go, in the first place.”
“Yes, and now he has ordered her not to. Bah!” with an angry wave
of the hand, “it is as plain as if it was painted on the wall. He doesn’t
want me coming here to see you; he never did.”
“Then why did he let you come at all?”
“I don’t know—unless it was because he thought we might be seeing
each other somewhere else anyhow, and he could keep an eye on
us as long as we were in his house.”
“Bob! If you say another word like that I shall go away and leave you.
Uncle Foster knows that he doesn’t need to keep an eye on me. He
trusts me absolutely.”
She was indignant, but he was angry and sure of the correctness of
his suspicions.
“He doesn’t trust me, then,” he declared, stubbornly. “He hates me,
because I am a Cook. He was sending you to Europe to get you
where I couldn’t see you. Well, I guessed that little trick right away
and played a better one on him. I decided to go to Paris myself. He
had not thought of that, I guess. It must have jolted him when you
told him.”
“Bob, I won’t listen to such things.”
“And then, when you did tell him, he saw his little game was up and
so he has made up his mind to keep you here. Well, all right, then he
can keep me here, too. He isn’t the only one who can change their
mind. I’d like to tell him so.”
He strode to the hall door and stood there almost as if determined to
follow Foster Townsend to his room and tell him there and then. She
was silent for a moment. The things he had said were in exact
confirmation of the suspicion voiced by Nabby Gifford and which she
had not permitted herself to consider.
“The sly old rat!” he muttered between his teeth. She caught her
breath.
“No!” she cried. “No, I don’t believe a word of it.... And even if it were
true—which it isn’t—it mustn’t make any difference in your going.
You must sail on the Lavornia just as you planned.”
He spoke over his shoulder. “I shan’t,” he vowed, determinedly. “I
stay right here.”
“No, you mustn’t do any such thing. I shan’t let you.”
“You can’t stop me.... No, and he can’t either. The scheming old
hypocrite!”
She walked to the door now and opened it.
“You had better go home,” she said. “I don’t care to hear you speak
in this way any longer. When you are ready to talk and behave like a
sensible person you may come back and perhaps I will listen to you.
But not until you beg my pardon for saying such things about Uncle
Foster.”
He swung about to face her. “But, Esther,” he cried, “you know they
are true.”
“I know you ought to be ashamed of yourself for saying them, for
calling him a hypocrite and all the rest.”
“Well, what else is he? Making believe to you that—”
“Stop! Will you go now, please?”
“Of course I shan’t! I have only just come. Esther, dear, I am sorry if I
said more than I should. I am mad clear through. Oh, we must not
quarrel because—because he—”
“Will you stop talking about him? And will you go this minute?”
He jammed his hands into his pockets. His face was flushed and
hers white, but the fire in his eyes was dying. He tried to take her
hand, but she drew it away.
“Do you really want me to go—now?” he asked, incredulously. “You
can’t mean it, dear.”
“I do mean it. I think it is very much better that you should. You have
said enough to-night, more than enough. I don’t want to hear more
and I don’t feel like talking, myself. Please go.”
He hesitated, then he surrendered.
“Perhaps you are right,” he admitted. “I guess I am not very good
company; shan’t be until I get over this. When I come again I’ll try to
behave more like a Christian. I am awfully sorry, dear. You will make
allowances and forgive me, won’t you? Good heavens, think what a
disappointment this has been for me. All my plans—”
“They were my plans, too.”