| //// |
| 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. |
| //// |
| = Arthur SPI |
| |
| Arthur SPI enables you to add custom logic to generate `native-image` configuration. |
| |
| == Dependencies |
| |
| [source,xml] |
| ---- |
| <dependency> |
| <groupId>org.apache.geronimo.arthur</groupId> |
| <artifactId>arthur-spi</artifactId> |
| <version>${arthur.version}</version> |
| </dependency> |
| ---- |
| |
| == Usage |
| |
| You must implement a `org.apache.geronimo.arthur.spi.ArthurExtension` and register it as a SPI (fully qualified name in `META-INF/services/org.apache.geronimo.arthur.spi.ArthurExtension`). |
| This extension will have to implement `execute(Context)` method to register reflection, resource, ... metadata needed by `native-image` build. |
| |
| Here is an example: |
| |
| [source,java] |
| ---- |
| public class MyJaxbExtension implements ArthurExtension { |
| |
| @Override |
| public void execute(final Context context) { |
| context.findAnnotatedClasses(XmlRootElement.class).stream() |
| .flatMap(clazz -> createReflectionModel(clazz)) |
| .forEach(context::register); |
| } |
| |
| // createReflectionModel() just instantiate a ClassReflectionModel instance |
| } |
| ---- |
| |
| TIP: you can use `context.finder()` to find classes based on some annotation. |
| |
| --- |
| |
| Previous: link:api.html[Arthur API] Next: link:implementation.html[Arthur Implementation] |