1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.neo4j.server.plugins;
21
22 import org.neo4j.kernel.AbstractGraphDatabase;
23 import org.neo4j.server.rest.repr.BadInputException;
24
25 class ParameterExtractor extends DataExtractor
26 {
27 final String name;
28 final Class<?> type;
29 final boolean optional;
30 final String description;
31 final TypeCaster caster;
32
33 ParameterExtractor( TypeCaster caster, Class<?> type, Parameter param,
34 Description description )
35 {
36 this.caster = caster;
37 this.type = type;
38 this.name = param.name();
39 this.optional = param.optional();
40 this.description = description == null ? "" : description.value();
41 }
42
43 @Override
44 Object extract( AbstractGraphDatabase graphDb, Object source, ParameterList parameters )
45 throws BadInputException
46 {
47 Object result = caster.get( graphDb, parameters, name );
48 if ( optional || result != null ) return result;
49 throw new IllegalArgumentException( "Mandatory argument \"" + name + "\" not supplied." );
50 }
51
52 @Override
53 void describe( ParameterDescriptionConsumer consumer )
54 {
55 consumer.describeParameter( name, type, optional, description );
56 }
57 }