Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extract XContent from the elasticsearch server #28504

Closed
4 tasks done
nik9000 opened this issue Feb 2, 2018 · 4 comments
Closed
4 tasks done

Extract XContent from the elasticsearch server #28504

nik9000 opened this issue Feb 2, 2018 · 4 comments

Comments

@nik9000
Copy link
Member

nik9000 commented Feb 2, 2018

One day we'd like the high level rest client not to depend on Elasticsearch's server code. As a first step we're going to extract Elasticsearch's xcontent classes into a jar without dependencies.

  • Replace xcontent's explicit dependencies on Log4J with something pluggable and have the Elasticsearch server plug Log4J into it (@dakrone)
  • Separate xcontent from Lucene (@dakrone)
  • Separate xcontent from other parts of Elasticsearch (like commons) (@dakrone)
  • Build the jar
@nik9000
Copy link
Member Author

nik9000 commented Feb 2, 2018

#28449 and #28488 started this process. It'll take a few more PRs to finish it.

@nik9000
Copy link
Member Author

nik9000 commented Feb 2, 2018

As is #28503.

dakrone added a commit to dakrone/elasticsearch that referenced this issue Feb 5, 2018
This replaces more of the `ParseField.match` calls with the same call using a
deprecation handler.

Relates to elastic#28504
dakrone added a commit to dakrone/elasticsearch that referenced this issue Feb 5, 2018
This replaces more of the `ParseField.match` calls with the same call using a
deprecation handler. It encapsulates all of the instances in the
`org.elastsicsearch.search` package.

Relates to elastic#28504
dakrone added a commit that referenced this issue Feb 8, 2018
…ll (#28525)

* Replace more deprecated ParseField.match calls with non-deprecated call

This replaces more of the `ParseField.match` calls with the same call using a
deprecation handler.

Relates to #28504

* Address Nik's comments
dakrone added a commit that referenced this issue Feb 8, 2018
…ll (#28525)

* Replace more deprecated ParseField.match calls with non-deprecated call

This replaces more of the `ParseField.match` calls with the same call using a
deprecation handler.

Relates to #28504

* Address Nik's comments
dakrone added a commit that referenced this issue Feb 8, 2018
* Switch to non-deprecated ParseField.match method for o.e.search

This replaces more of the `ParseField.match` calls with the same call using a
deprecation handler. It encapsulates all of the instances in the
`org.elastsicsearch.search` package.

Relates to #28504

* Address Nik's comments
dakrone added a commit that referenced this issue Feb 8, 2018
* Switch to non-deprecated ParseField.match method for o.e.search

This replaces more of the `ParseField.match` calls with the same call using a
deprecation handler. It encapsulates all of the instances in the
`org.elastsicsearch.search` package.

Relates to #28504

* Address Nik's comments
dakrone added a commit to dakrone/elasticsearch that referenced this issue Feb 8, 2018
This removes all the server references to the deprecated `ParseField.match`
method in favor of the method that passes in the deprecation logger.

Relates to elastic#28504
dakrone added a commit that referenced this issue Feb 9, 2018
)

This removes all the server references to the deprecated `ParseField.match`
method in favor of the method that passes in the deprecation logger.

Relates to #28504
dakrone added a commit that referenced this issue Feb 9, 2018
)

This removes all the server references to the deprecated `ParseField.match`
method in favor of the method that passes in the deprecation logger.

Relates to #28504
dakrone added a commit to dakrone/elasticsearch that referenced this issue Feb 9, 2018
This commit changes the state format that was previously passed in to
`MetaDataStateFormat` to always use Smile. This doesn't actually change the
format, since we have used Smile for writing the format since at least 5.0. This
removes the automatic detection of the state format when reading state, since
any state that could be processed in 6.x and 7.x would already have been written
in Smile format.

This is work towards removing the deprecated methods in the XContent code where
we do automatic content-type detection.

Relates to elastic#28504
dakrone added a commit that referenced this issue Feb 12, 2018
This commit changes the state format that was previously passed in to
`MetaDataStateFormat` to always use Smile. This doesn't actually change the
format, since we have used Smile for writing the format since at least 5.0. This
removes the automatic detection of the state format when reading state, since
any state that could be processed in 6.x and 7.x would already have been written
in Smile format.

This is work towards removing the deprecated methods in the XContent code where
we do automatic content-type detection.

Relates to #28504
dakrone added a commit that referenced this issue Feb 12, 2018
This commit changes the state format that was previously passed in to
`MetaDataStateFormat` to always use Smile. This doesn't actually change the
format, since we have used Smile for writing the format since at least 5.0. This
removes the automatic detection of the state format when reading state, since
any state that could be processed in 6.x and 7.x would already have been written
in Smile format.

This is work towards removing the deprecated methods in the XContent code where
we do automatic content-type detection.

Relates to #28504
dakrone added a commit to dakrone/elasticsearch that referenced this issue Feb 12, 2018
This adds deprecated shims for the `convertToMap` method in `XContentHelper`.
These shims will be removed once all callers switch to passing in the
`DeprecationHandler` when converting to a map.

Relates to elastic#28504
dakrone added a commit to dakrone/elasticsearch that referenced this issue Feb 13, 2018
This moves more of the callers to pass in the DeprecationHandler.

Relates to elastic#28504
dakrone added a commit to dakrone/elasticsearch that referenced this issue Feb 13, 2018
Part 2

This moves more of the callers to pass in the DeprecationHandler.

Relates to elastic#28504
dakrone added a commit that referenced this issue Apr 2, 2018
* Begin moving XContent to a separate lib/artifact

This commit moves a large portion of the XContent code from the `server` project
to the `libs/xcontent` project. For the pieces that have been moved, some
helpers have been duplicated to allow them to be decoupled from ES helper
classes. In addition, `Booleans` and `CheckedFunction` have been moved to the
`elasticsearch-core`  project.

This decoupling is a move so that we can eventually make things like the
high-level REST client not rely on the entire ES jar, only the parts it needs.

There are some pieces that are still not decoupled, in particular some of the
XContent tests still remain in the server project, this is because they test a
large portion of the pluggable xcontent pieces through
`XContentElasticsearchException`. They may be decoupled in future work.
Additionally, there may be more piecese that we want to move to the xcontent lib
in the future that are not part of this PR, this is a starting point.

Relates to #28504
dakrone added a commit that referenced this issue Apr 2, 2018
* Begin moving XContent to a separate lib/artifact

This commit moves a large portion of the XContent code from the `server` project
to the `libs/xcontent` project. For the pieces that have been moved, some
helpers have been duplicated to allow them to be decoupled from ES helper
classes. In addition, `Booleans` and `CheckedFunction` have been moved to the
`elasticsearch-core`  project.

This decoupling is a move so that we can eventually make things like the
high-level REST client not rely on the entire ES jar, only the parts it needs.

There are some pieces that are still not decoupled, in particular some of the
XContent tests still remain in the server project, this is because they test a
large portion of the pluggable xcontent pieces through
`XContentElasticsearchException`. They may be decoupled in future work.
Additionally, there may be more piecese that we want to move to the xcontent lib
in the future that are not part of this PR, this is a starting point.

Relates to #28504
dakrone added a commit to dakrone/elasticsearch that referenced this issue Apr 4, 2018
This moves `ObjectParser`, `AbstractObjectParser`, and
`ConstructingObjectParser` into the libs/x-content dependency. This decoupling
allows them to be used for parsing for projects that don't want to depend on the
entire Elasticsearch jar.

Relates to elastic#28504
dakrone added a commit to dakrone/elasticsearch that referenced this issue Apr 4, 2018
This allows us to use Tuple from other projects that don't want to rely on the
entire Elasticsearch jar.

I have also added very simple tests, since there were none.

Relates tangentially to elastic#28504
dakrone added a commit that referenced this issue Apr 6, 2018
* Move Tuple into elasticsearch-core

This allows us to use Tuple from other projects that don't want to rely on the
entire Elasticsearch jar.

I have also added very simple tests, since there were none.

Relates tangentially to #28504
dakrone added a commit that referenced this issue Apr 6, 2018
* Move Tuple into elasticsearch-core

This allows us to use Tuple from other projects that don't want to rely on the
entire Elasticsearch jar.

I have also added very simple tests, since there were none.

Relates tangentially to #28504
dakrone added a commit that referenced this issue Apr 6, 2018
* Move ObjectParser into the x-content lib

This moves `ObjectParser`, `AbstractObjectParser`, and
`ConstructingObjectParser` into the libs/x-content dependency. This decoupling
allows them to be used for parsing for projects that don't want to depend on the
entire Elasticsearch jar.

Relates to #28504
dakrone added a commit that referenced this issue Apr 6, 2018
* Move ObjectParser into the x-content lib

This moves `ObjectParser`, `AbstractObjectParser`, and
`ConstructingObjectParser` into the libs/x-content dependency. This decoupling
allows them to be used for parsing for projects that don't want to depend on the
entire Elasticsearch jar.

Relates to #28504
dakrone added a commit to dakrone/elasticsearch that referenced this issue Apr 9, 2018
In order to decouple TimeValue from Joda, this removes the unused `format`
methods.

Relates to elastic#28504
dakrone added a commit that referenced this issue Apr 10, 2018
In order to decouple TimeValue from Joda, this removes the unused `format`
methods.

Relates to #28504
dakrone added a commit that referenced this issue Apr 10, 2018
In order to decouple TimeValue from Joda, this removes the unused `format`
methods.

Relates to #28504
dakrone added a commit to dakrone/elasticsearch that referenced this issue Apr 10, 2018
This commit decouples the `TimeValue` class from the other server classes. This
is in preperation to move `TimeValue` into the `elasticsearch-core` jar,
allowing us to use it from projects that cannot depend on the elasticsearch-core
library.

Relates to elastic#28504
dakrone added a commit that referenced this issue Apr 11, 2018
* Decouple TimeValue from Elasticsearch server classes

This commit decouples the `TimeValue` class from the other server classes. This
is in preperation to move `TimeValue` into the `elasticsearch-core` jar,
allowing us to use it from projects that cannot depend on the elasticsearch-core
library.

Relates to #28504
dakrone added a commit that referenced this issue Apr 11, 2018
* Decouple TimeValue from Elasticsearch server classes

This commit decouples the `TimeValue` class from the other server classes. This
is in preperation to move `TimeValue` into the `elasticsearch-core` jar,
allowing us to use it from projects that cannot depend on the elasticsearch-core
library.

Relates to #28504
dakrone added a commit to dakrone/elasticsearch that referenced this issue Apr 11, 2018
This commit moves the `TimeValue` class into the elasticsearch-core project.
This allows us to use this class in many of our other projects without relying
on the entire `server` jar.

Relates to elastic#28504
dakrone added a commit that referenced this issue Apr 12, 2018
This commit moves the `TimeValue` class into the elasticsearch-core project.
This allows us to use this class in many of our other projects without relying
on the entire `server` jar.

Relates to #28504
dakrone added a commit that referenced this issue Apr 12, 2018
This commit moves the `TimeValue` class into the elasticsearch-core project.
This allows us to use this class in many of our other projects without relying
on the entire `server` jar.

Relates to #28504
@dakrone
Copy link
Member

dakrone commented Apr 20, 2018

All the currently relevant parts of XContent have been moved into the new x-content artifact, so I'm going to consider this resolved for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants