Pro RESTful APIs with Micronaut: Build Java-Based Microservices with REST, JSON, and XML 2 / converted Edition Sanjay Patni pdf download
Pro RESTful APIs with Micronaut: Build Java-Based Microservices with REST, JSON, and XML 2 / converted Edition Sanjay Patni pdf download
or textbooks at https://ebookmass.com
https://ebookmass.com/product/pro-restful-apis-with-
micronaut-build-java-based-microservices-with-rest-json-and-
xml-2-converted-edition-sanjay-patni/
https://ebookmass.com/product/learn-microservices-with-spring-
boot-3-3rd-converted-edition-moises-macero-garcia/
https://ebookmass.com/product/coding-clean-reliable-and-safe-rest-
apis-with-asp-net-core-8-1st-edition-anthony-giretti/
Beginning Cloud Native Development with MicroProfile,
Jakarta EE, and Kubernetes: Java DevOps for Building and
Deploying Microservices-based Applications 1st Edition
Tarun Telang
https://ebookmass.com/product/beginning-cloud-native-development-with-
microprofile-jakarta-ee-and-kubernetes-java-devops-for-building-and-
deploying-microservices-based-applications-1st-edition-tarun-telang/
https://ebookmass.com/product/learning-java-beginning-programming-
with-java-for-dummies-bach/
Sanjay Patni
This work is subject to copyright. All rights are solely and exclusively
licensed by the Publisher, whether the whole or part of the material is
concerned, specifically the rights of translation, reprinting, reuse of
illustrations, recitation, broadcasting, reproduction on microfilms or in
any other physical way, and transmission or information storage and
retrieval, electronic adaptation, computer software, or by similar or
dissimilar methodology now known or hereafter developed.
The publisher, the authors, and the editors are safe to assume that the
advice and information in this book are believed to be true and accurate
at the date of publication. Neither the publisher nor the authors or the
editors give a warranty, expressed or implied, with respect to the
material contained herein or for any errors or omissions that may have
been made. The publisher remains neutral with regard to jurisdictional
claims in published maps and institutional affiliations.
Abstract
APIs are not new. They’ve served as interfaces that enable applications to communicate with
each other for decades. But the role of APIs has changed dramatically in the last few years.
Innovative companies have discovered that APIs can be used as an interface to the business,
allowing them to monetize digital assets, extend their value proposition with partner-
delivered capabilities, and connect to customers across channels and devices. When you
create an API, you are allowing others within or outside of your organization to make use of
your service or product to create new applications, attract customers, or expand their
business. Internal APIs enhance the productivity of development teams by maximizing
reusability and enforcing consistency in new applications. Public APIs can add value to your
business by allowing third-party developers to enhance your services or bring their
customers to you. As developers find new applications for your services and data, a network
effect occurs, delivering significant bottom-line business impact. For example, Expedia
opened up their travel booking services to partners through an API to launch the Expedia
Affiliate Network, building a new revenue stream that now contributes $2B in annual
revenue. Salesforce released APIs to enable partners to extend the capabilities of their
platform and now generates half of their annual revenue through those APIs, which could be
SOAP based (JAX-WS) and, more recently, RESTful (JAX-RS), Spring Boot, and now Micronaut.
A SOAP web service depends upon a number of technologies (such as UDDI, WSDL, SOAP,
HTTP) and protocols to transport and transform data between a service provider and the
consumer and can be created with JAX-WS.
Later, Roy Fielding (in the year 2000) presented his doctoral dissertation, “Architectural
Styles and the Design of Network-based Software Architecture.” He coined the term “REST,” an
architectural style for distributed hypermedia systems. Put simply, REST (short for
REpresentational State Transfer) is an architectural style defined to help create and organize
distributed systems. The keyword from that definition should be “style,” because an
important aspect of REST (and which is one of the main reasons books like this one exist) is
that it is an architectural style—not a guideline, not a standard, or anything that would imply
that there are a set of hard rules to follow in order to end up having a RESTful architecture.
In this chapter, I’ll be covering REST fundamentals, SOAP vs. REST, and web architectural
style to provide a solid foundation and better prepare you for what you’ll see in later chapters.
The main idea behind REST is that a distributed system, organized RESTfully, will improve
in the following areas:
Performance: The communication style proposed by REST is meant to be efficient and
simple, allowing a performance boost on systems that adopt it.
Scalability of component interaction: Any distributed system should be able to handle this
aspect well enough, and the simple interaction proposed by REST greatly allows for this.
Simplicity of interface: A simple interface allows for simpler interactions between systems,
which in turn can grant benefits like the ones previously mentioned.
Modifiability of components: The distributed nature of the system, and the separation of
concerns proposed by REST (more on this in a bit), allows for components to be modified
independently of each other at a minimum cost and risk.
Portability: REST is technology and language agnostic, meaning that it can be implemented
and consumed by any type of technology (there are some constraints that I’ll go over in a
bit, but no specific technology is enforced).
Reliability: The stateless constraint proposed by REST (more on this later) allows for the
easier recovery of a system after failure.
Visibility: Again, the stateless constraint proposed has the added full state of said request
(this will become clear once I talk about the constraints in a bit). From this list, some direct
benefits can be extrapolated. A component-centric design allows you to make systems that
are very fault tolerant. Having the failure of one component not affect the entire stability of
the system is a great benefit for any system. Interconnecting components is quite easy,
minimizing the risks when adding new features or scaling up or down. A system designed
with REST in mind will be accessible to a wider audience, thanks to its portability (as
described earlier). With a generic interface, the system can be used by a wider range of
developers. In order to achieve these properties and benefits, a set of constraints were
added to REST to help define a uniform connector interface. REST is not suggested to use
when you need to enforce a strict contract between a client and a server and when
performing transactions that involve multiple calls.
Client-Server
The separation of concerns is the core theme of the Web’s client-server constraints.
The Web is a client-server-based system, in which clients and servers have distinct parts
to play.
They may be implemented and deployed independently, using any language or technology,
so long as they conform to the Web’s uniform interface.
Layered System
Generally speaking, a network-based intermediary will intercept client-server communication
for a specific purpose.
Network-based intermediaries are commonly used for enforcement of security, response
caching, and load balancing.
The layered system constraints enable network-based intermediaries such as proxies and
gateways to be transparently deployed between a client and a server using the Web’s uniform
interface.
Caching
Caching is one of web architecture’s most important constraints. The cache constraints
instruct a web server to declare the cache ability of each response’s data.
Caching response data can help to reduce client-perceived latency, increase the overall
availability and reliability of an application, and control a web server’s load. In a word,
caching reduces the overall cost of the Web.
Stateless
The stateless constraint dictates that a web server is not required to memorize the state of its
client applications. As a result, each client must include all of the contextual information that
it considers relevant in each interaction with the web server.
Web servers ask clients to manage the complexity of communicating their application
state so that the web server can service a much larger number of clients. This trade-off is a
key contributor to the scalability of the Web’s architectural style.
Code on Demand
The Web makes heavy use of code on demand, a constraint which enables web servers to
temporarily transfer executable programs, such as scripts or plug-ins, to clients.
Code on demand tends to establish a technology coupling between web servers and their
clients, since the client must be able to understand and execute the code that it downloads on
demand from the server. For this reason, code on demand is the only constraint of the Web’s
architectural style that is considered optional.
HATEOAS
The final principle of REST is the idea of using hypermedia as the engine of application state
(HATEOAS). When developing a client-server solution using HATEOAS, the logic on the server
side might change independently of the clients.
Hypermedia is a document-centric approach with the added support for embedding links
to other services and information within the document format.
One of the uses of hypermedia and hyperlinks is composing complex sets of information
from disparate sources. The information could be within a company private cloud or within a
public cloud from disparate sources.
Example:
<podcast id="111">
<customer>http://customers.myintranet.com/customers/1</customers>
<link>http://podcast.com/myfirstpodcast</link>
<description> This is my first podcast </description>
</podcast>
Each of these web architecture styles adds beneficial properties to the web system.
By adopting these constraints, teams can build simple, visible, usable, accessible,
evolvable, flexible, maintainable, reliable, scalable, and performant systems as shown in Table
1-2.
Table 1-2 Constraint and system property
Note I have not covered security in this book as part of REST fundamentals, but security
is very important for rolling out RESTful APIs.
What Is REST?
We have briefly introduced REST with REST API fundamentals in the previous section. This
section has further introductory details about REST concepts.
“REST” was coined by Roy Fielding in his Ph.D. dissertation to describe a design pattern
for implementing networked systems. REST is Representational State Transfer, an
architectural style for designing distributed systems. It’s not a standard, but rather a set of
constraints. It’s not tied to HTTP, but is associated most commonly with it.
REST Basics
Unlike SOAP and XML-RPC, REST does not really require a new message format. The HTTP
API is CRUD (Create, Retrieve, Update, and Delete):
GET = “give me some info” (Retrieve)
POST = “here’s some update info” (Update)
PUT = “here’s some new info” (Create)
DELETE = “delete some info” (Delete)
And more….
PATCH = The HTTP method PATCH can be used to update partial resources. For instance,
when you only need to update one field of the resource, PUTting a complete resource
representation might be cumbersome and utilizes more bandwidth.
HEAD = The HEAD method is identical to the GET method, except that the server must not
return a message body in the response. This method is often used for testing hypertext
links for validity, accessibility, and recent modification.
OPTIONS = This method allows the client to determine the options and/or requirements
associated with a resource or the capabilities of a server, without implying a resource
action or initiating a resource retrieval.
Notion of “idempotency”: The idea that when sending a GET, DELETE, or PUT to the system,
the effect should be the same whether the command is sent one or more times, but POST
creates an entity in the collection and therefore is not idempotent.
REST Fundamentals
Just to remind you, about 8356 APIs were written in REST by ProgrammableWeb.com in
2016. REST is a resource-based architecture. A resource is accessed via a common interface
based on the HTTP standard methods. REST asks developers to use HTTP methods explicitly
and in a way that’s consistent with the protocol definition. Each resource is identified by a
URL. Every resource should support the HTTP common operations, and REST allows that
resource to have different representations, for example, text, xml, json, etc. The REST client
can ask for a specific representation via the HTTP protocol (content negotiation). Table 1-3
describes data elements used in REST.
Table 1-3 Structures of REST
Resources
First, here’s a REST resource to GET a list of podcasts:
http://prorest/podcasts
Representations
Here is an XML representation of a response—GET customer for an id:
<Customer>
<id>123</id>
<name>John</name>
</Customer>
{"Customer":{"id":"123","name":"John"}}
Content Negotiation
HTTP natively supports a mechanism based on headers to tell the server about the content
you expect and you’re able to handle. Based on these hints, the server is responsible for
returning the corresponding content in the correct format. Figure 1-1 shows an example.
If the server doesn’t support the requested format, it will send back a 406 status code (Not
Acceptable) to notify the client that made the request (“The requested resource is only
capable of generating content not acceptable according to the Accept headers sent in the
request”) according to the specification.
Summary
REST identifies the key architectural principles of why the Web is prevalent and scalable. The
next step in the education of the Web is to apply these principles to the semantics Web and
the world of web services. REST offers a simple, interoperable, and flexible way of writing
web services that can be very different than the WS-* that so many of you had training in. In
the next chapter, we will introduce Micronaut—A morder JVM based, full-stack framework for
building modular, easily testable micro service and server less applications. We will also
compare it with similar framework Spring Boot.
© The Author(s), under exclusive license to APress Media, LLC, part of Springer Nature 2023
S. Patni, Pro RESTful APIs with Micronaut
https://doi.org/10.1007/978-1-4842-9200-6_2
2. Micronaut
Sanjay Patni1
Abstract
Micronaut is a JVM-based modern full-stack microservice framework.
This new framework has been developed by the Grails team with an
intention to solve problems which have been identified over the years
while building the real-world microservices applications.
One of the most exciting features of Micronaut is its compile-time
dependency injection mechanism. Most frameworks use reflection and
proxies to perform dependency injection at runtime. Micronaut,
however, builds its dependency injection data at compile time. The
result is faster application startup and smaller memory footprints.
I think it is not an exaggeration if I say we are living in the age of
microservices. Microservices became the de facto architecture pattern
for every new enterprise-scale application that is being implemented,
and many existing monolithic applications are getting migrated into
microservices. In the case of the Java world, Spring Boot turned out to
be the standard framework to develop microservices. There were some
other frameworks like DropWizard, Apache Karaf, and Jersey. But they
were not able to give tough competition to Spring Boot, and slowly their
usage percentage came down and became insignificant over a period of
time. If you observe the evolution of Spring Boot, initially it was not
proposed as a microservices solution from Spring. It was initially
proposed and implemented as the containerless web application, and
the developer community started using it for microservices
implementation. But Spring Boot got its own limitations like
Fixed single language
Lack of built-in support for data accessing
Lack of simpler unit testing
Lack of built-in service discovery
Lack of built-in load balancing
We need explicit configuration which can be achieved through the
cloud services instead of having the built-in support within the
framework itself.
Here comes Micronaut which contains the aforementioned built-in
features and designed with single and primary intent to serve as the
vehicle for microservices development.
Serverless Functions
Serverless architecture, where developers will deploy the function.
From there onward, they are completely managed by the cloud
environment, that is, invocation, execution, and control. But
Micronaut’s fast startup time, compile-time approach, and low-memory
footprint make this framework a great candidate for developing
functions, and in fact, Micronaut features have the dedicated support
for implementing and deploying functions to the AWS Lambda and any
FaaS system that supports running functions as containers.
Application Configuration
Micronaut inspired from both Grails and Spring Boot in integrating
configuration properties from different sources directly into the core
IoC container. Configurations can be provided by default in either
YAML, JSON, Java properties, or Groovy files. The convention is to
search for a file called application.yml, application.properties,
application.json, or application.groovy.
Command-line arguments
Properties from SPRING_APPLICATION_JSON (only if there is any
Spring dependency)
Properties from MICRONAUT_APPLICATION_JSON
Java system properties
OS environment variables
Each environment-specific properties like application-
{environment}.{extension} (could be .properties, .json, .yml, or
.groovy)
Application-specific properties from the application.{extension}
(could be .properties, .json, .yml, or .groovy)
( p p j y g y)
Special properties (random values)
Spring Boot supports all the preceding property locations; in
addition, it also supports other property locations:
Spring Boot devtools global settings properties
@TestPropertySource annotations on your tests
@SpringBootTest#properties annotation attribute on your tests
ServletConfig init parameters
ServletContext init parameters
JNDI attributes from java:comp/env
@PropertySource annotations on your @Configuration classes
Default properties (specified by setting
SpringApplication.setDefaultProperties)
“Spring Boot provided more ways to handle with properties when
we compared it against Micronaut.”
Security
Spring Boot supports the following security mechanisms by default:
MVC Security
WebFlux Security
OAuth2
Actuator Security
Micronaut supports the following security mechanisms by default:
Authentication Providers
Security Rules
IP Pattern Rule
Secured Annotation
Intercept URL Map
Built-In Endpoints Security
Authentication Strategies
Basic Auth
Session Authentication
JSON Web Token
Built-In Security Controllers
Retrieve the Authenticated User
Security Events
Caching
Spring Boot supports the following caching providers:
Redis
Couchbase
Generic
JCache (JSR-107)
EhCache 2.x
Hazelcast
Infinispan
Caffeine
Micronaut supports the following list of caching providers:
Caffeine (by default, Micronaut supports it)
Redis
“Obviously, Spring Boot is leading in supporting caching providers.”
API Portfolio
This book will take three business domain problems and build a
portfolio of APIs.
Online Flight
To illustrate features of Micronaut, this book will take an example of an
“online flight” application. The application will enable passengers to
view flight they are traveling. You will define two component classes:
1.
A service component that lets a passenger see what flights they are
booked in.
2.
A repository component that stores passengers for a flight. Initially,
you will store passengers in memory for simplicity.
Message
This API will enable sending messages to the users in the system.
Quote
To illustrate features of Micronaut data, this book will take an example
of an “online quote” application. The application will enable buyers to
create and view quotes including products they want to buy. You will
define three component classes:
1.
Catalog to list products with their price
2.
Quote for a customer including line items of the products with total
price
3.
Quote line item including products with unit price and quantity
Software
This book will use the following software for the coding problems.
Micronaut
https://micronaut.io/download/
INSTALLING WITH SDKMAN!
This tool makes installing the Micronaut framework on any Unix-
based platform (Mac OSX, Linux, Cygwin, Solaris, or FreeBSD) easy.
Simply open a new terminal and enter
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
$ mn --version
JDK 11
https://jdk.java.net/archive/
POSTMAN
www.postman.com/downloads/
CURL
https://curl.se/download.xhtml
IDE
You have two choices to use the IDE.
IntelliJ
www.jetbrains.com/idea/download/
Maven
https://maven.apache.org/download.cgi
Setting Up an IDE
The application created in the previous section contains a “main class”
located in src/main/java that looks like the following:
package hello.world;
import io.micronaut.runtime.Micronaut;
public class Application {
public static void main(String[] args) {
Micronaut.run(Application.class);
}
}
This is the class that is run when running the application via Gradle
or via deployment.
Configuring Visual Studio Code
In this book, we will illustrate the use of Visual Studio Code for editing
Java code.
Open code created in the hello-world folder by clicking “Open” and
navigating to the hello-world folder. Micronaut can be set up within
Visual Studio Code. You will need to first install the Java Extension Pack.
package hello.world;
import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
@Controller("/hello") public class HelloController
{
@Get(produces = MediaType.TEXT_PLAIN)
public String index() {return "Hello from
Micronaut"; }
}
cd ~/hello-world
./gradlew run
curl http://localhost:8080/hello
Summary
In this chapter, we reviewed features of Micronaut and compared those
with Spring Boot. We also analyzed sample domains—flight status
message, and quote to create a portfolio of APIs using Micronaut.
© The Author(s), under exclusive license to APress Media, LLC, part of Springer Nature 2023
S. Patni, Pro RESTful APIs with Micronaut
https://doi.org/10.1007/978-1-4842-9200-6_3
Abstract
This chapter introduces basic concepts about XML and JSON. At the end of this chapter,
there is an exercise to demonstrate XML and JSON responses from a Micronaut app.
What Is XML?
eXtensible Markup Language (XML) is a text-based markup language which is a standard
for data interchange on the Web. As with HTML, you identify data using tags (identifiers
enclosed in angle brackets, like this: <...>). Collectively, the tags are known as “markup.”
It puts a label on a piece of data that identifies it (e.g., <message>...</message>). In
the same way that you define the field names for a data structure, you are free to use any
XML tags that make sense for a given application. Naturally, though, for multiple
applications to use the same XML data, they have to agree on the tag names they intend to
use. Here is an example of some XML data you might use for a messaging application:
<message>
<to>[email protected]</to>
<from>[email protected]</from>
<subject>XML Is Really Cool>
</subject>
<text>
How many ways is XML cool? Let me count the ways...
</text>
</message>
Tags can also contain attributes (additional information included as part of the tag
itself) within the tag’s angle brackets. If you consider the information in question to be
part of the essential material that is being expressed or communicated in the XML, put it in
an element. For human-readable documents, this generally means the core content that is
being communicated to the reader. For machine-oriented record formats, this generally
means the data that comes directly from the problem domain. If you consider the
information to be peripheral or incidental to the main communication, or purely intended
to help applications process the main communication, use attributes. The following
example shows an email message structure that uses attributes for the to, from, and
subject fields:
One really big difference between XML and HTML is that an XML document is always
constrained to be well formed. There are several rules that determine when a document is
well formed, but one of the most important is that every tag has a closing tag. So, in XML,
the </to> tag is not optional. The <to> element is never terminated by any tag other than
</to>.
Note Another important aspect of a well-formed document is that all tags are
completely nested. So you can have <message>..<to>..</to>..</message>, but
never <message>..<to>..</message>..</to>.
An XML Schema is a language for expressing constraints about XML documents. There are
several different schema languages in widespread use, but the main ones are Document
Type Definitions (DTDs). It defines the legal building blocks of an XML document. It also
defines the document structure with a list of legal elements and attributes.
XML Comments
XML comments look just like HTML comments:
To complete this introduction to XML, note that an XML file always starts with a prolog.
The minimal prolog contains a declaration that identifies the document as an XML
document, like this:
<?xml version="1.0"?>
What Is JSON?
JSON or JavaScript Object Notation is a lightweight text-based open standard designed for
human-readable data interchange. Conventions used by JSON are known to programmers,
which include those with knowledge of C, C++, Java, Python, Perl, etc.
The format was specified by Douglas Crockford.
It was designed for human-readable data interchange.
It has been extended from the JavaScript scripting language.
The filename extension is .json.
The JSON Internet media type is application/json.
JSON is easy to read and write.
JSON is language independent.
JSON Syntax
In this section, we will discuss what JSON’s basic data types are and their syntax. Figure 3-
1 shows the basic data types of JSON.
Strings
Strings are enclosed in double quotes and can contain the usual assortment of escaped
characters.
Numbers
Numbers have the usual C/C++/Java syntax, including exponential (E) notation. All
numbers are decimal—no octal or hexadecimal.
Objects
An object is an unordered set of a name/value pair. The pairs are enclosed within braces ({
}).
Example:
Arrays
An array is an ordered collection of values. The values are enclosed within brackets. The
syntax of JSON arrays is shown in Figure 3-3.
Booleans
It can have either true or false values.
Null
The value is that it’s empty.
or this:
1 <person>
2 <first-name>John</first-name>
3 <last-name>Smith</last-name>
4 </person>
or this:
1 <object type="Person">
2 <property name="first-name">John</property>
3 <property name="last-name">Smith</property>
4 </object>
or any of the myriad of other ways one can conceive of expressing the same concept
(and there are many). The standard XML parser does not help you in this regard. You still
need to do some work with the parse tree.
Working with JSON is a different, and superior, experience. First, the simpler syntax
helps you avoid the need to decide between many different ways of representing your data
(as we saw earlier with XML), much less which rope to hang yourself with. Usually, there is
only one straightforward way to represent something:
1 { "first-name" : "John",
2 "last-name" : "Smith" }
The following code creates a domain object Message with an attribute message. Getter and
setter methods are created in the IDE.
package com.rest.model;
import javax.validation.constraints.NotNull;
Now create a new folder controller after navigating to message code generated by
Micronaut.
The following code exposes two endpoints:
a.
message/xml for getting the message attribute value in XML
b. Message/json for getting the message attribute value in JSON format
Create a controller:
package com.rest.controllers;
import com.rest.model.Message;
import io.micronaut.http.annotation.Get;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.HttpResponse;
import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Produces;
@Controller("/message") // <2>
public class MessageController {
@Produces(MediaType.TEXT_XML)
@Get("/xml")
public HttpResponse<?> messageXml() {
Message message = new Message();
message.setMessage("Hello from Micronaut");
final String xml = encodeAsXml(message);
return
HttpResponse.ok(xml).contentType(MediaType.APPLICATION_XML_TYPE);
}
@Produces(MediaType.TEXT_JSON)
@Get("/json")
public HttpResponse<?> messageJson() {
Message message = new Message();
message.setMessage("Hello from Micronaut");
return HttpResponse.ok(message);
}
}
Other documents randomly have
different content
"Might it not be better, in your grace's good judgment," said Sir
Payan, "to take the duke's person at once? For assuredly, as soon as
he hears that his minion is committed, he will become alarmed, and
find security in some foreign land."
"If by any chance this Maurice were to see me with your grace,"
replied Sir Payan, "he would lose no time, but fly instantly, before
you had speech of his grace the king. If you think it necessary, my
lord, that I should attend you, it may be well to arrest the traitor
immediately on your arrival."
"Nay, nay, nay!" said Wolsey, shaking his head. "You know not
Henry, Sir Payan; he is hard and difficult to rule, and, were I to
arrest Sir Osborne, would take for insult what was meant as a
service. But you shall not go: there is, indeed, no need. These
papers are quite enough, with the testimony of the priest. Let him
be sent down post-haste to Richmond after me."
"He shall, my lord," replied Sir Payan. "But one word more, your
grace. If the Duke of Buckingham be condemned, his estates, of
course, are forfeited to the crown. Near me lies his beautiful manor
of the Hill, in Kent, and I know your grace will not forget your
faithful servants." Wolsey paused, and Sir Payan went on. "To show
how constantly present your grace is to all my thoughts, you told me
some time ago that you desired to have two of the tallest men in the
realm for porters of the gate. Cast your eyes through that window,
my lord, and I think you will see two that no prince in Europe can
match in his hall."
No service that Sir Payan could have rendered, either to the state
or to himself, would have given half so much pleasure to Wolsey as
the possession of the two gigantic Cornishmen we have before
mentioned; for, amongst all his weaknesses, his passion for having
tall men about him was one of the most conspicuous. As soon as for
a moment or two he had considered them attentively through the
window, and compared them with all the pigmy-looking race around,
he thanked Sir Payan with infinite graciousness for his care; and
hinted, though he did not promise, that Buckingham's manor in Kent
might be the reward. While he yet spoke, a gentleman-usher
entered, to announce that the barge was ready; and, giving some
more directions to Sir Payan, in regard to sending the priest, Wolsey
rose to proceed on his journey. The procession, without which he
never moved, was already arranged in the ante-chamber, consisting
of marshals and gentlemen-ushers, with two stout priests bearing
the immense silver crosses of his archbishopric and his legacy; and
the moment he moved towards the door, the ushers pressed
forward, crying, "On before, my lords and masters! on before! Make
way for the lord cardinal! Make way for my lord's grace! On before!
on before!"
If any one will look at the almanac for the year 1520, he will find
marked, opposite the 4th day of May, the following curious piece of
information: "High-water at London Bridge at half-past three;" and,
if he calculate rightly, he will discover that as Wolsey set out from
what was then called the Cardinal's Bridge[15] at high noon, he had
the most favourable tide in the world for carrying him to Richmond.
His rowers, too, plied their oars with unceasing activity; and his
splendid barge, with its carved and gilded sides, cut rapidly through
the water, but still not rapidly enough for his impatience.
The boat touched the shore; and while the chief yeoman of the
barge, as his privilege, supported the arm of the cardinal, the two
stout priests bearing the crosses hurried to land with the other
attendants, and ranged themselves in order to proceed before him.
Two of his running footmen sped on to announce his approach, and
the rest, with the form and slowness of a procession, traversed the
small space that separated them from the court, reached the gate,
and entering the palace, Wolsey, more like an equal prince than a
subject, passed towards the king's privy-chamber, amidst the
profound bows and reverences of all the royal attendants, collected
to do honour to his arrival.
Many had been the rumours in the palace during the morning
respecting the king's health, and it was generally reported that the
accident of the day before had thrown him into a fever. This,
however, was evidently not the case; for a little before noon Sir
Osborne Maurice had received a message by one of the royal pages,
to the effect that at three o'clock the king would expect him in his
privy-chamber. That hour had nearly approached, and the young
knight was preparing to obey Henry's commands, when a note was
put into his hands by Mistress Margaret, the waiting-woman of Lady
Constance de Grey. It was a step which Sir Osborne well knew she
would not have taken had it not been called for by some particular
circumstance, and with some alarm he opened the paper and read--
The lord cardinal is here: remember your promise. Tarry not
rashly, if you love Constance.
Sir Osborne returned to his own apartment, and after calling for
Longpole, walked up and down the room for a moment or two, while
some curious, vague feelings of doubt and apprehension passed
through his mind.
"'Tis very foolish!" said he, at length; "and yet 'tis no harm to be
prepared. Longpole, saddle the horses, and have my armour ready.
'Tis no harm to be prepared;" and quitting his own chambers, he
turned his steps towards those of Lady Constance, which here, not
like the former ones in the palace at Greenwich, were situated at the
other extremity of the building. His path led him again past the royal
lodgings; and as he went by, Sir Osborne perceived that the page
gave entrance to a priest, whose figure was in some degree familiar
to his eye. Where he had seen him he did not know; but, however,
he staid not to inquire, and proceeded onward to the door of Lady
Constance's apartments. One of her women gave him entrance, and
he soon reached her sitting-chamber, where he found her calmly
engaged in embroidery. But there, also, was good Dr. Wilbraham,
who of late had shrewdly begun to suspect a thing that was already
more than suspected by half the court; namely, that Sir Osborne
Maurice was deeply in love with Constance de Grey, and that the
lady was in no degree insensible to his affection. Now, though the
good doctor had thought in the first instance that Lady Constance's
marriage with Lord Darby would be the very best scheme on earth,
he now began to think that the present arrangement would be a
great deal better: his reasoning proceeding in the very inverse of
Wolsey's, and leading him to conclude that as Lord Darby had quite
enough of his own, it would be much better for Lady Constance to
repair, with her immense wealth, the broken fortunes of the ancient
house of Fitzbernard, and at the same time secure her own
happiness by marrying the best and the bravest of men.
Notwithstanding all this, he could not at all comprehend, and never
for a moment imagined, that either Constance or her lover might in
the least wish his absence; and therefore, with great satisfaction at
beholding their mutual love, he remained all the time that Sir
Osborne dared to stay, and conducted him to the door with that
affectionate respect which he always showed towards his former
pupil. While the old clergyman stood bidding Sir Osborne farewell, a
man habited like a yeoman approached, inquiring for the lodging of
Lady Constance de Grey; and on being told that it was before him,
he put a folded note into the hands of Dr. Wilbraham, begging him
to deliver it to the lady, which the chaplain promised to do.
"By heaven!" cried the king, "I have lately much doubted of his
loyalty. He has, as you once before made me observe, much
absented himself from the court, keeping, as I hear, an almost royal
state in the counties; and lately, on the pretence that he is sick, that
his physicians command him quiet, he refuses to accompany us to
Guisnes. I fear me, I fear me, 'tis his loyalty is sick. But let me hear
your reasons, my good lord cardinal. Fain would I still behold him
with an eye of favour; for he is in many things a noble and a princely
peer, and by nature richly endowed with all the shining qualities both
of the body and the mind. 'Tis sad, indeed 'tis sad, that such a man
should fall away and lose his high renown! But your reasons,
Wolsey! Give me the history."
"Whom do you aim at?" cried the king. "Quick! give me his name.
I know of no such person. All about me are men of trust."
"Ha!" cried Henry, starting; and then, after thinking for a moment,
he burst into a fit of laughter. "Nay, nay, my good Wolsey," he said,
shaking his head: "nay, nay, nay; Sir Osborne saved my life no
longer ago than yesterday, which looks not like treason;" and he
related to the cardinal the accident that had befallen him while
hawking.
"I cannot believe it!" cried Henry, striking the table with his hand.
"I will not believe it! By heaven! the very soul of honour sparkles in
his eye! But your proofs, lord cardinal! your proofs! I will not have
such things advanced against my faithful subjects, without full and
sufficient evidence."
While he read, Henry's brow knit into a heavy frown, and, biting
his lip, he went back to the beginning, and again read over the
papers. "Cardinal," said he, at length, "bid the page seek Pace, my
secretary, and ask him for the last letter from the Duke of
Buckingham."
Wolsey obeyed; and, while waiting for the return of the page,
Henry remained with his eyes averted, as if in deep thought, beating
the papers with his fingers, and gnawing his lip in no very placable
mood; while the cardinal wisely abstained from saying a word,
leaving the irritation of the king's mind to expend itself, without
calling it upon himself. As soon as the letter was brought, Henry laid
it side by side with those that Wolsey had placed before him, and
seemed to compare every word, every syllable, to ascertain the
identity of the handwriting. "True, by my life!" cried he, casting
down the papers. "The writing is the same; and now, my lord
cardinal, what have you farther to say? Are there any farther proofs,
ha?"
"Were there none other, your grace," replied Wolsey, "than the
duke's handwriting, and the deposition of a disinterested and
respectable witness, who can have no enmity whatever against this
Sir Osborne Maurice, and who probably never saw him but on the
two occasions he mentions, I think it would be quite sufficient to
warrant your grace in taking every measure of precaution. But there
is another witness, whom, indeed, I have not seen, but who can
give evidence, I understand, respecting the conduct of the person
accused towards the Rochester rioters. Knowing how much your
grace's wisdom passeth that of the best in the realm, I have dared
to have this witness (a most honourable priest) brought hither,
hoping that the exigency of the case might lead you to examine him
yourself, when, perhaps, your royal judgment may elicit more from
him than others could do."
As soon as Wolsey had taken a low seat near the king, and the
secretary, kneeling on one before the table, was prepared to write,
Henry again proceeded, addressing the priest, who stood before him
the picture of a disquieted spirit.
"Say, do you know one Sir Osborne Maurice?" demanded the king.
"Yes, surely, please your royal grace," replied the priest. "At least
that was the name which his attendants gave to the noble and
courageous knight that saved me from the hands of the Rochester
shipwrights."
"First," said Wolsey, "give us your name, and say how you came
to fall into the hands of these rebellious shipwrights."
"By my faith, I have always thought so," said Henry. "What say
you now, cardinal? Question him yourself, man."
"Not so! not so!" cried the priest. "He did far more wisely, for
there would have been much blood spilt; but he sent forward one,
who seemed to be his shield-bearer, who shook hands with the chief
of the rioters, and spoke him fair; and then the knight came forward
himself, and spoke to him; and the chief of the rioters cried with a
loud voice to his people, that this was not Lord Thomas, as they had
thought, but a friend and well-beloved of the good Duke of
Buckingham; and it was wonderful how soon the eloquence of that
young man worked upon the multitude, and made them let me go.
He was, indeed, a youth of a goodly presence, and fair to look upon,
and had something noble and commanding in his aspect; and his
words moved the rioters in the twinkling of an eye, and made them
wholly change their purpose."
Henry's brow, which had cleared during the former part of the
priest's narration, now grew doubly dark and cloudy; and he
muttered to himself, "Too clear! too clear!" while Wolsey proceeded
to question the priest more closely.
"And what did you remark after you were with the knight?"
demanded Wolsey. "Was there no particular observation made on
the whole transaction?"
"Not that I can call to mind," answered the priest. "All I remember
is, that they seemed a very merry party, and laughed and joked
about it; which I, being frightened, thought almost wicked, God
forgive me! for it was all innocency and high blood of youth."
"Well, sir," said Wolsey, "you may go. Go with him, secretary; and
see that he be well tended, but allowed to have speech of no one."
"Whom mean you?" cried the king. "Ha! I say attach Edward
Bohun, Duke of Buckingham."
"In regard to the Duke of Buckingham, my liege," replied Wolsey,
less readily than he had before spoken, "will you take into your royal
consideration whether it may not be better to suffer him to proceed
a while with his treasonous schemes? for I question if the evidence
we have at present against him would condemn him with the peers."
"You are right, my Wolsey; you are right!" cried the king, seating
himself, and laying his hand upon the papers; "let it be conducted as
you say. But see that he escape not, for his ingratitude adds another
shade to what is black itself. As to this Sir Osborne Maurice, 'tis a
noble spirit perverted by that villain Buckingham. I have seen and
watched the seeds of many virtues in him."
"It must be painful, then, for your grace to command his arrest,"
said Wolsey; "and yet he is so near your royal person, and his
treason is so manifest, that the very love of your subjects requires
that he should suffer death."
"And yet," replied Henry, fixing his eye upon the cardinal, and
speaking emphatically; "and yet, even now I feel the warm blood of
the English kings flowing lightly in my veins, which but for him would
have been cold and motionless: and shall I take his life that has
saved mine? No, Wolsey, no! It must not be! He has been misled,
but is not wicked."
"No need that his trial be immediate," answered the cardinal; "if
your grace permits, he shall be committed privately to the Tower,
and there await your return from France; by which time, depend on
it, the Duke of Buckingham will have given further tokens of his mad
ambition, and both may be tried together. Then let the greater
traitor suffer and the lesser find grace, so that your royal justice and
your clemency be equally conspicuous."
"Be it so, then," said the king; "though in truth, good cardinal, it
grieves me to lose this youth. He is, without exception, the best
lance in Christendom, and would have done our realm much credit in
our journey to France: I say it grieves me! Ay, heartily it grieves
me!"
"Not so! not so, lord cardinal!" cried Henry; "these are things not
so easily acquired as you churchmen think. I never saw a better
knight. When his lance breaks in full course, you shall behold his
hand as steady as if it held a straw: nor knee, nor thigh, nor heel
shall shake; and when the toughest ash splinters upon his casque,
he shall not bend even so much as a strong oak before a summer
breeze. But his guilt is clear, so the rest is all nought."
"Hold, hold!" cried the king; "not to-night, good Wolsey. Before
we fly our hawk we cry the heron up, and he shall have the same
grace. To-morrow, if he be still found, arrest him where you will; but
for to-night he is safe, nor must his path be dogged. He shall have
free and fair start, mark me, till tomorrow at noon; then slip your
greyhounds on him, if you please."
"It is my will," said the king, his brow darkening. "Who shall
contradict it? Ha! See that it be obeyed exactly, my lord!"
"It shall, your grace," said Wolsey, bending his head with a
profound inclination. "Your will is law to all your faithful servants; but
only let your noble goodness attribute to my deep love for your royal
person the fear I have that this traitorous agent of a still greater
traitor may be tempted in despair, if he find that he is discovered, to
attempt some heinous crime against your grace."
"Fear not, man! fear not!" replied the king. "He, that when he
might have let me die, risked his own life to save mine, will never
arm his hand against me: I fear not, cardinal. So be you at ease. But
return to London; see that Buckingham be closely watched; and be
sure that no preparation be wanting for the meeting with Francis of
France. Be liberal, be liberal, lord cardinal! I would not that the
nobles of France should say they had more gold than we. Let
everything be abundant, be rich, and in its flush of newness; and as
to Sir Osborne Maurice, arrest him to-morrow, if he be still here. Let
him be fairly tried, and if he come out pure, well. Yet still, if he be
condemned, his own life shall be given him as a reward for mine.
However, till tomorrow let it rest. It is my will!"
Though Wolsey would have been better pleased to have had the
knight safely in the Tower, yet, even in case of his making his escape
before the next morning, his great object was gained, that of
banishing from the court for ever one whose rapid progress in the
king's regard bade fair, with time, to leave every one behind in
favour. He therefore ceased to press the king upon the subject,
especially as he saw, by many indubitable signs, that Henry was in
one of those imperious moods which would bear no opposition. A
few subjects of less import still remained to be discussed, but the
monarch bore these so impatiently, that Wolsey soon ceased to
importune him upon them; and resolving to reserve all further
business for some more auspicious day, he rose, and taking leave
with one of those refined, yet high-coloured, compliments which no
man was so capable of justly tempering as himself, he left the royal
presence, and proceeded to another part of the palace on business
whose object is intimately allied to the present history, as we shall
see hereafter.
CHAPTER XXV.
The page lost not a moment in appearing; for the king's hasty
mood was easily discernible in his aspect, and no one dared, even
by an instant's delay, to add fuel to the fire which was clearly
burning in his bosom; but still Henry allowed him to wait for several
minutes. "Who waits in the ante-chamber?" demanded he, at length.
"He has been gone about an hour, your grace," replied the page.
"They hold me at nought!" cried Henry. "Strike his name from the
list! By my life, I will teach him to wait! Go call Sir Osborne Maurice
to my presence," and rising from his seat, he began again to pace
the apartment.
"Marry, thou sayest well!" cried Henry. "We trust he will, and
guard us ever against traitors! What say you?"
"Well prayed again," said Henry, more calmly. "Rise, rise, Sir
Osborne; we must speak together. Give me your arm. We cannot sit
and speak when the heart is so busy. We will walk. This hall has
space enough," and with a hurried pace he took one or two turns in
the chamber, fixing his eyes upon the ground, and biting his lip in
silence. "Now, by our Lady!" cried he at length, "there are many
men in this kingdom, Sir Osborne Maurice, who, seeing us here,
holding your arm and walking by your side, would judge our life in
peril."
"Rise, sir knight," said the king. "On my life, I believe you so far,
that if you have done wrong, you have been misled; and that your
heart is loyal I am sure: yet listen. You came to this court a stranger;
in you I found much of valour and of knightly worth. I loved you,
and I favoured you; yet now I find that you have in much deceived
me. Speak not, for I will not see in you any but the man who has
saved my life; I will know you for none other. Say, then, Sir Osborne,
is not life a good return for life? It is? ha?"
"It is, my liege," replied Sir Osborne, believing his real name
discovered. "Whatever I have done amiss has been but error of
judgment, not of heart, and surely cannot be held as very deep
offence in eyes so gracious as my noble king's."
"We find excuses for you, sir, which rigorous judges might not
find," replied the monarch; "yet there are many who strive to make
your faults far blacker than they are, and doubtless may urge much
against you; but hitherto we stand between you and the law, giving
you life for life. But see you use the time that is allowed you well, for
to-morrow, at high noon, issues the warrant for your apprehension,
and if you make not speed to leave this court and country, your fate
upon your head, for you have warning."
Sir Osborne was struck dumb, and for a moment he gazed upon
the king in silent astonishment. "I know not what to think," he cried,
after a while; "I cannot believe that a king famous for his clemency,
can see in my very worst crime aught but an error. Your grace has
said that many strive to blacken me; still humbly at your feet let me
beseech you to tell me of what they do accuse me."
"Nay, your grace," replied Sir Osborne, "poor as I came I'll go; but
thus far richer, that for one short month I won a great king's love,
and lost it without deserving; and if to this your grace will add the
favour to let me once more kiss your royal hand, you'll send me
grateful forth."
Henry held out his hand towards him. "By my faith," cried he, "I
do believe him honest! But the proofs! the proofs! Go, go, Sir
Osborne; I judge not harshly of you. You have been misled; but fly
speedily, I command you; for your own sake, fly!"
Sir Osborne raised himself, took his sword from the table, and,
with a low obeisance to the king, quitted the room, his heart far too
full to speak with any measure what he felt.
"I have been here all the time, your worship," replied the yeoman.
"And I've made some noise in the world, too, while you have been
here, for I let all the armour fall in that closet."
"I did not hear you," said the knight. "My thoughts were very
busy. But, my good Heartley, I am afraid the time is come that we
must part."
"Well, then, my lord," said Longpole, "I will call you by your real
name now; and so I'll go and saddle our horses, pack up as much as
I can, and we'll be off in a minute."
"But, my good Longpole," said his master, "you do not think what
you are doing. Indeed, you must not leave your country and your
friends, and that poor girl Geraldine, to follow a man ruined in
fortune and expectations, going to travel through strange lands,
where he knows not whether he may find friends or enemies."
"More reason he should have a companion on the road," replied
Longpole. "But, my lord, my determination is made. Where you go,
there will I go too; and as to little Mistress Geraldine, why, when
we've made a fortune, which I am sure we shall do, I'll make her
trot over after me. But, as I suppose there is but little time to spare,
I will go get everything into order as fast as possible. Carpe diem, as
good Dr. Wilbraham used to say to me when I was lazy. There is
your lordship's harness. If you can manage to pop on the breast and
back pieces, I will be back directly."
"Nay," said the knight, "there is yet one person I must see.
However, be not long, good fellow, for I shall not stay. Give me that
wrapping cloak with the hood."
"Jesu Maria, sir! don't look so wild," cried the woman, who
thought herself quite pretty enough, even in her tears, to be a little
familiar. "Dr. Wilbraham is with the Lady Constance, and so is
Mistress Margaret, and therefore she is safe enough, surely."
"But cannot you say whither she is gone?" cried the knight.
"When did she go? How?"
"She went but now, sir," replied the woman. "She was sent for
about an hour or more ago to the little tapestry-hall, to speak with
my lord cardinal; and after that she came back very grave and
serious, and made Mistress Margaret pack up a great parcel of
things, while she herself spoke with Dr. Wilbraham; and when that
was done, they all three went away together; but before she went
she gave each of us fifty marks a-piece, and said that she would
give us news of her."
Of all the bright gifts with which heaven has blessed our youth,
there is none more excellent than that elasticity of spirit which
rebounds strongly from the depressing load of a world's care, and
after the heaviest weight of sorrow, or the severest stroke of
disappointment, raises us lightly up, and gives us back to hope and
to enjoyment. It is peculiar to youth, and it is peculiar to good
conduct; for the reiterated burdens that years cast upon us as they
fly gradually rob the spring of expectation of its flexibility, and vice
feels within itself that it has not the same right to hope as virtue. Sir
Osborne's spirit was all rebound; and though surrounded with
doubts, with difficulties, and with dangers, it was not long before he
was ready to try again the wide adventurous world, with unabated
vigour of endeavour, though rebuffed in his first endeavours and
disappointed in his brightest expectations.
Such was the companion, of all others, fitted to cheer Sir Osborne
on his way; far more so than if he had been one of equal rank or
equal refinement, for he was always ready to assist, to serve, to
amuse, or advise, without sufficient appreciation of finer feelings to
encourage, even by understanding them, those thoughts upon which
the knight might have dwelt painfully in conversation with any one
else.
At the same time, Longpole was far above his class in every
respect. He had some smattering of classical knowledge, which was
all that rested with him of the laborious teaching which good Dr.
Wilbraham had bestowed upon his youth; he not only could read
and write, but had read all the books he could get at, while a
prisoner in France, and had, on more than one occasion, contrived
to turn a stanza, though neither the stuff nor the workmanship was
very good; and he had, moreover, a strange turn for jesting, which
he took care to keep in perpetual exercise. To these he joined all the
thousand little serviceable qualifications of an old soldier, and an
extraordinary fluency in speaking French, which had proved very
useful to him in many instances. Thus equipped inwardly, he now
stood before Sir Osborne, with his outward man armed in the plain
harness of a custrel, or shield-bearer, with casque and corslet,
cuissards, brassards, and gauntlets; and considering that he was
nearly six feet three inches in height, he was the sort of man that a
knight might not be sorry to see at his back in the mêlée or the
skirmish.
"But 'twill weary the horse," said Sir Osborne; "however, as 'tis
on, let it stay: only it may attract attention, and give too good a
track to any that follow; though, God knows, I can hardly determine
which way to turn my rein."
"Well, Longpole," cried he, waking from his reverie, "what news?
Have you heard anything of Lady Constance?" and, as if ashamed of
his delay, he busied himself to finish the arrangement of his armour.
Longpole heard all this with an air of great edification; but when
he thought that his master had indulged himself enough, he
ventured to interrupt him by saying, "The sun, sir, has gone to bed;
had not we better take advantage of his absence, and make our way
to London? Remember, sir, he is an early riser at this time of year,
and will be up looking after us tomorrow before we are well aware."
"Ay, Longpole, ay!" replied the knight; "I will linger no longer, for
it is unavailing. The trumpet must have sounded to supper by this
time; has it not? So we shall have no idlers to gaze at our
departure."
"The trumpet sounded as I went down but now," said Longpole,
"and I met the sewer carrying in a brawn's head so like his own, that
I could not help thinking he had killed and cooked his brother: they
must be hard at his grace's liege capons even now."
"On, Longpole!" cried the knight; "on, and send him upon some
errand, for I am in no fit mood to speak with him now." While Sir
Osborne drew back into the doorway, Longpole advanced, and in a
moment after the man was seen traversing the court in another
direction. The knight then proceeded, the horses were brought forth,
and springing into the saddle, Sir Osborne, with a sigh given to the
recollection of lost hopes, touched his charger with the spur, and
rode out of the gates. Longpole followed, and in a few minutes they
were on the high road to London.
CHAPTER XXVI.
He is a worthy gentleman,
Exceedingly well read, and profited
In strange concealments.--Henry IV.
Longpole obeyed, and the moment after the light moved. "Hold!
hold!" cried the knight, "he hears;" and the next moment the
casement window was pushed open, through which the head of the
good merchant protruded itself, vociferating, "Who's tere? What do
you want? I'll call te watch. Watch! Watch!"
"Oh! I'll come down, I'll come down," cried the merchant "Run,
Skippenhausen, and open te door. I'll come down, my coot lord, in a
minute."
The two travellers had not now long to wait; for in a moment or
two the little door at which Longpole had at first in vain applied for
admission was thrown open by a personage, the profundity of whose
nether garments, together with his long waistcoat, square-cut blue
coat, with the seams, and there were many, all bound with white
lace, induced Sir Osborne immediately to write him down for a Dutch
navigator. Descending the stairs, immediately behind this first
apparition, came the merchant himself, with his black gown, which
had probably been laid aside for the night, now hurried on, not with
the most correct adjustment in the world, for it looked very much as
if turned inside out, which might well happen to a robe, the sleeves
of which were not above six inches long. Sir Osborne, however, did
not stay to investigate the subject very minutely; but explaining to
the good merchant that he had something particular to say to him,
he was conducted into the counting-house, where he informed him
as succinctly as possible of what had occurred and what he desired.
Good Master Hans was prodigal of his astonishment, which vented
itself in various exclamations in Flemish, English, and French; after
which, coming to business, as he said, he told the knight that he
could put up his horses in the same stable where he kept his drays,
and that after that they would talk of the rest. "But on my wort, my
coot lord," said he, "I must go with your man myself, for there is not
one soul in the place to let him in or out of the stable, which is
behind the house."
The most troublesome part of the affair for the moment was to
take off the bard or horse armour that covered the knight's charger,
as it could not be left in the stable till the next morning, when the
merchant's carters would arrive; and poor William Hans was
desperately afraid that the round of the watch would pass while the
operation was in execution, and suppose that he was receiving some
contraband goods, which might cause a search the next day.
He also it was who, while the good merchant, with the candle in
his hand, led our friend Longpole with the horses to the stable,
conducted the knight up-stairs into the room where they had first
discovered the light, and invited him, in extremely good English, to
be seated. By the appearance of the chamber it seemed that Master
Hans had been preparing to make great cheer for his captain; for
various were the flagons and bottles that stood upon the table,
together with trenchers and plates unused, and a pile of manchet
and spice bread, with other signs and prognostications of a rere-
supper; not to mention an immense bowl which stood in the midst,
and whose void rotundity seemed yearning for some savoury mass
not yet concocted.
"It is very unlucky you did not let me know before," said the
merchant, "for we might easily have cot the ship of my coot friend
Skippenhausen there ready to-day, and you could have sailed to-
morrow morning by the first tide. You might trust him; you might
Welcome to our website – the perfect destination for book lovers and
knowledge seekers. We believe that every book holds a new world,
offering opportunities for learning, discovery, and personal growth.
That’s why we are dedicated to bringing you a diverse collection of
books, ranging from classic literature and specialized publications to
self-development guides and children's books.
ebookmasss.com