Comments (6)
Turns out we can't use Annotation
as the general type of a restriction but we can use Class<? extends Annotation>
so the definition will need to look something like the following:
@Option(name = "--example", arity = 2)
@PartialRestriction(index = 0, restriction = NotBlank.class)
@NotBlank
private List<String> examples;
And we'll need special logic in MetadataLoader
to load the list of @PartialRestriction
and modify generated restrictions as necessary
I have run into one bug which is that if you want to partially apply a postValidate()
based restriction this does not work because postValidate()
assumes the ability to see the full state. So we need to change that to finalValidate()
method and introduce a new postValidate()
method that sees the strongly typed value at the point at which it is introduced
from airline.
More thoughts:
- Will need an
@Partials
to cope with the case where you want to define multiple@Partial
on a single field - Need to work out how to implement
HelpHint
forPartialRestriction
in a sane manner MetadataLoader
needs to obtain and act upon the@Partial
/@Partials
that are present
from airline.
Will also need to document Migration because some of these changes are breaking
Finally it would be ideal if restrictions that make no sense as @Partial
error ASAP
from airline.
Also it would be nice if the current means of enforcing restrictions is moved from the parsers into ParseState
so people can't write parsers that don't enforce the restrictions and we don't have to duplicate code so much
from airline.
Everything but HelpHint
support is done
from airline.
Added HelpHint
support so closing this now
from airline.
Related Issues (20)
- Allowed Values restrictions have bugs with case sensitivity
- Options of scope `GLOBAL` and `GROUP` cannot be specified at command level
- List possible enum values in the help for an Option HOT 2
- Add `module-info.java` to all modules HOT 3
- Rename `@com.github.rvesse.airline.annotations.restrictions.File` HOT 4
- option arity
- Options with non-zero arity and no value supplied can consume other option names instead of producing an error HOT 6
- Add support for Path conversion HOT 3
- Unexpected param isn't thrown if there is an argument HOT 8
- Upgrade inject-api to 2.x HOT 13
- Download link broken HOT 1
- When numeric range restriction is too narrow a type for field type unhelpful errors are issued
- Docs site is not very accessible for color-challenged readers HOT 2
- Find a way to make Prompts not block on timeout
- [Question] Need advice on migrating from io.airlift:airline v0.8 HOT 4
- Provide an option/argument defaulting mechanism
- ...llowedValuesRestrictionFactory not found HOT 14
- ListValueOptionParser is overly strict HOT 2
- Provide support for prompting HOT 2
- Airline incorrectly consumes (i.e. ignores) a value when defaulting in some circumstances HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from airline.