| /////////////////////////////////////////////////////////////// |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| /////////////////////////////////////////////////////////////// |
| |
| :leveloffset: 1 |
| |
| [[core,Core]] |
| = Core = |
| |
| == Overview == |
| |
| The Polygene™ Core is composed of several artifacts described in this section. |
| |
| The following figure show the Core artifacts alongside <<libraries,libraries>> and <<extensions,extensions>>, and, in green, |
| typical applications artifacts. This is not a full code dependency graph but should give you a good overview of how the |
| pieces fit together. Find out more about each of the Polygene™ Core artifacts below. |
| |
| .Polygene™ Core Overview |
| image::core-overview.png[] |
| |
| //*<<core-api,Core API>>* |
| === Core API === |
| |
| //____ |
| The Polygene™ Core API is the primary interface for client application code during the main execution phase, i.e. after the |
| application has been activated. |
| |
| <<core-api,Learn more>> |
| //____ |
| |
| //*<<core-bootstrap-assembly,Core Bootstrap>>* |
| === Core Bootstrap === |
| //____ |
| Polygene™ has a distinct bootstrap phase, also known as the _Assembly_ of an application, where the applications structure |
| is defined programmatically. Once all the layers, modules and all the composite types in each module have been defined |
| the model is instantiated into an application. This enables the entire _structure_ system in Polygene, where types "belongs" |
| to a module and visibility rules define default behaviors, enforcement of architectural integrity and much more. |
| |
| <<core-bootstrap-assembly,Learn more>> |
| //____ |
| |
| //*<<core-testsupport,Core Test Support>>* |
| === Core Test Support === |
| //____ |
| Polygene™ comes with classes to help with testing. There is also some mocking support, to allow some of Polygene’s unique |
| aspects to be mocked, but since Polygene™ is so flexible at a fine-granular level, we have found that mocking is seldom, |
| if ever, needed. |
| |
| <<core-testsupport,Learn more>> |
| //____ |
| |
| //*<<core-spi,Core Extension SPI>>* |
| === Core Extension SPI === |
| //____ |
| The Polygene™ Core Runtime has a number of extension points, which we call the _Polygene™ Core Extension SPI_. These are defined |
| interfaces used *only* by the Core Runtime and *never* directly by application code. <<extensions>> are assembled in |
| applications during the bootstrap phase. |
| |
| <<core-spi,Learn more>> |
| //____ |
| |
| //*<<core-spi,Core Runtime>>* |
| === Core Runtime === |
| //____ |
| Your code should *never*, *ever*, have a dependency on Polygene™ Core Runtime. If you think you need this, you should |
| probably contact dev@polygene.apache.org and see if your usecase can either be solved in a existing way or |
| perhaps that a new Core Extension SPI is needed. |
| |
| <<core-runtime,Learn more>> |
| //____ |
| |
| |
| :leveloffset: 2 |
| |
| include::../../../../core/api/src/docs/api.txt[] |
| |
| :leveloffset: 2 |
| |
| include::../../../../core/bootstrap/src/docs/bootstrap.txt[] |
| |
| :leveloffset: 2 |
| |
| include::../../../../core/testsupport/src/docs/testsupport.txt[] |
| |
| :leveloffset: 2 |
| |
| include::../../../../core/spi/src/docs/spi.txt[] |
| |
| :leveloffset: 2 |
| |
| include::../../../../core/runtime/src/docs/runtime.txt[] |
| |
| :leveloffset: 2 |