1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.neo4j.server.rest.repr;
21
22 import java.util.ArrayList;
23 import java.util.List;
24
25 import org.neo4j.server.plugins.ParameterDescriptionConsumer;
26
27 public final class ExtensionPointRepresentation extends ObjectRepresentation implements
28 ParameterDescriptionConsumer
29 {
30 private final RepresentationType extended;
31 private final String name;
32 private final String desciption;
33 private final List<ParameterRepresentation> parameters = new ArrayList<ParameterRepresentation>();
34
35 public ExtensionPointRepresentation( String name, Class<?> extended, String desciption )
36 {
37 super( RepresentationType.PLUGIN_DESCRIPTION );
38 this.name = name;
39 this.desciption = desciption;
40 this.extended = RepresentationType.extended( extended );
41 }
42
43 @Override
44 public void describeParameter( String name, Class<?> type, boolean optional, String description )
45 {
46 parameters.add( new ParameterRepresentation( name, type, optional, description, false ) );
47 }
48
49 @Override
50 public void describeListParameter( String name, Class<?> type, boolean optional,
51 String description )
52 {
53 parameters.add( new ParameterRepresentation( name, type, optional, description, true ) );
54 }
55
56 public String getName()
57 {
58 return name;
59 }
60
61 public String getExtendedEntity()
62 {
63 return extended.valueName;
64 }
65
66 @Mapping( "name" )
67 public ValueRepresentation methodName()
68 {
69 return ValueRepresentation.string( name );
70 }
71
72 @Mapping( "description" )
73 public ValueRepresentation description()
74 {
75 return ValueRepresentation.string( desciption );
76 }
77
78 @Mapping( "extends" )
79 public ValueRepresentation extendedEntity()
80 {
81 return ValueRepresentation.string( getExtendedEntity() );
82 }
83
84 @Mapping( "parameters" )
85 public ListRepresentation parametersList()
86 {
87 return new ListRepresentation( RepresentationType.PLUGIN_PARAMETER, parameters );
88 }
89
90 private static class ParameterRepresentation extends MappingRepresentation
91 {
92 private final String name;
93 private final RepresentationType paramType;
94 private final String description;
95 private final boolean optional;
96 private final boolean list;
97
98 ParameterRepresentation( String name, Class<?> type, boolean optional, String description,
99 boolean list )
100 {
101 super( RepresentationType.PLUGIN_PARAMETER );
102 this.name = name;
103 this.optional = optional;
104 this.list = list;
105 this.paramType = RepresentationType.extended( type );
106 this.description = description;
107 }
108
109 @Override
110 protected void serialize( MappingSerializer serializer )
111 {
112 serializer.putString( "name", name );
113 serializer.putString( "type", list ? paramType.listName : paramType.valueName );
114 serializer.putBoolean( "optional", optional );
115 serializer.putString( "description", description );
116 }
117 }
118 }