Skip to content

Commit eabb8bd

Browse files
committed
Add initial events support
1 parent 579a500 commit eabb8bd

File tree

223 files changed

+2207
-476
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

223 files changed

+2207
-476
lines changed

cdtp-definition-builder/src/main/java/com/github/kklisura/cdtp/definition/builder/Application.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ public class Application {
4040
private static final String TYPES_PACKAGE = "types";
4141
private static final String EVENTS_PACKAGE = "events";
4242
private static final String COMMANDS_PACKAGE = "commands";
43-
private static final String ANNOTATIONS_PACKAGE = "annotations";
43+
private static final String SUPPORT_ANNOTATIONS_PACKAGE = "support.annotations";
44+
private static final String SUPPORT_TYPE_PACKAGE = "support.types";
4445

4546
private static final String COMMAND_FACTORY_NAME = "ChromeDevTools";
4647

@@ -69,7 +70,9 @@ public static void main(String[] args) throws IOException {
6970
final String typesPackageName = buildPackageName(configuration.getBasePackage(), TYPES_PACKAGE);
7071
final String eventPackageName = buildPackageName(configuration.getBasePackage(), EVENTS_PACKAGE);
7172
final String commandPackageName = buildPackageName(configuration.getBasePackage(), COMMANDS_PACKAGE);
72-
final String annotationsPackageName = buildPackageName(configuration.getBasePackage(), ANNOTATIONS_PACKAGE);
73+
74+
final String supportTypesPackageName = buildPackageName(configuration.getBasePackage(), SUPPORT_TYPE_PACKAGE);
75+
final String supportAnnotationsPackageName = buildPackageName(configuration.getBasePackage(), SUPPORT_ANNOTATIONS_PACKAGE);
7376

7477
final InputStream inputStream = new FileInputStream(configuration.getProtocolFile());
7578
final DevToolsProtocol protocol = DevToolsProtocolUtils.readJson(inputStream);
@@ -80,7 +83,7 @@ public static void main(String[] args) throws IOException {
8083
JavaBuilderFactory javaBuilderFactory = new JavaBuilderFactory() {
8184
@Override
8285
public JavaClassBuilder createClassBuilder(String packageName, String className) {
83-
return new JavaClassBuilderImpl(packageName, className, annotationsPackageName);
86+
return new JavaClassBuilderImpl(packageName, className, supportAnnotationsPackageName);
8487
}
8588

8689
@Override
@@ -90,13 +93,13 @@ public JavaEnumBuilder createEnumBuilder(String packageName, String enumName) {
9093

9194
@Override
9295
public JavaInterfaceBuilder createInterfaceBuilder(String packageName, String interfaceName) {
93-
return new JavaInterfaceBuilderImpl(packageName, interfaceName, annotationsPackageName);
96+
return new JavaInterfaceBuilderImpl(packageName, interfaceName, supportAnnotationsPackageName);
9497
}
9598
};
9699

97100
final TypesBuilder typesBuilder = new TypesBuilder(typesPackageName, javaBuilderFactory);
98101
final EventBuilder eventBuilder = new EventBuilder(eventPackageName, javaBuilderFactory, typesPackageName);
99-
final CommandBuilder commandBuilder = new CommandBuilder(commandPackageName, javaBuilderFactory, typesPackageName, eventPackageName);
102+
final CommandBuilder commandBuilder = new CommandBuilder(commandPackageName, javaBuilderFactory, typesPackageName, eventPackageName, supportTypesPackageName);
100103

101104
List<Builder> builderList = new ArrayList<>();
102105

cdtp-definition-builder/src/main/java/com/github/kklisura/cdtp/definition/builder/support/protocol/builder/CommandBuilder.java

Lines changed: 64 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.github.kklisura.cdtp.definition.builder.protocol.types.Command;
44
import com.github.kklisura.cdtp.definition.builder.protocol.types.Domain;
5+
import com.github.kklisura.cdtp.definition.builder.protocol.types.Event;
56
import com.github.kklisura.cdtp.definition.builder.protocol.types.type.object.ObjectType;
67
import com.github.kklisura.cdtp.definition.builder.protocol.types.type.object.Property;
78
import com.github.kklisura.cdtp.definition.builder.support.java.builder.Builder;
@@ -16,6 +17,7 @@
1617
import org.apache.commons.lang3.StringUtils;
1718

1819
import java.util.ArrayList;
20+
import java.util.Collections;
1921
import java.util.LinkedList;
2022
import java.util.List;
2123
import java.util.function.Predicate;
@@ -30,26 +32,36 @@
3032
* @author Kenan Klisura
3133
*/
3234
public class CommandBuilder {
35+
private static final String EVENT_PREFIX = "on";
36+
private static final String EVENT_LISTENER_ARGUMENT_NAME = "eventListener";
37+
private static final String EVENT_LISTENER_ARGUMENT_TYPE = "EventHandler";
38+
private static final String EVENT_LISTENER_RESULT = "EventListener";
39+
3340
private String basePackageName;
3441
private String typesPackageName;
3542
private String eventPackageName;
3643

44+
private String supportTypesPackageName;
45+
3746
private JavaBuilderFactory javaBuilderFactory;
3847

3948
/**
4049
* Creates a new command builder.
41-
*
42-
* @param basePackageName Base package name for this command.
50+
* @param basePackageName Base package name for this command.
4351
* @param javaBuilderFactory Java builder factory.
4452
* @param typesPackageName Package name for types.
4553
* @param eventPackageName Package name for events.
54+
* @param supportTypesPackageName Support types package name.
4655
*/
4756
public CommandBuilder(String basePackageName, JavaBuilderFactory javaBuilderFactory, String typesPackageName,
48-
String eventPackageName) {
57+
String eventPackageName, String supportTypesPackageName) {
58+
this.javaBuilderFactory = javaBuilderFactory;
59+
4960
this.basePackageName = basePackageName;
5061
this.typesPackageName = typesPackageName;
5162
this.eventPackageName = eventPackageName;
52-
this.javaBuilderFactory = javaBuilderFactory;
63+
64+
this.supportTypesPackageName = supportTypesPackageName;
5365
}
5466

5567
/**
@@ -76,6 +88,54 @@ public Builder build(Domain domain, DomainTypeResolver domainTypeResolver) {
7688

7789
List<Builder> builders = new LinkedList<>();
7890

91+
addCommands(domain, interfaceBuilder, domainTypeResolver, builders);
92+
addEvents(domain, interfaceBuilder);
93+
94+
if (builders.isEmpty()) {
95+
return interfaceBuilder;
96+
}
97+
builders.add(interfaceBuilder);
98+
return new CombinedBuilders(builders);
99+
}
100+
101+
private void addEvents(Domain domain, JavaInterfaceBuilder interfaceBuilder) {
102+
List<Event> events = domain.getEvents();
103+
if (CollectionUtils.isNotEmpty(events)) {
104+
for (Event event : events) {
105+
final String method = EVENT_PREFIX + StringUtils.capitalize(event.getName());
106+
107+
interfaceBuilder.addImport(supportTypesPackageName, EVENT_LISTENER_RESULT);
108+
interfaceBuilder.addImport(supportTypesPackageName, EVENT_LISTENER_ARGUMENT_TYPE);
109+
110+
final String eventsPackageName = buildPackageName(eventPackageName, domain.getDomain().toLowerCase());
111+
112+
interfaceBuilder.addImport(eventsPackageName, toEnumClass(event.getName()));
113+
114+
MethodParam methodParam = new MethodParam();
115+
methodParam.setName(EVENT_LISTENER_ARGUMENT_NAME);
116+
methodParam.setType(EVENT_LISTENER_ARGUMENT_TYPE + "<" + toEnumClass(event.getName()) + ">");
117+
118+
interfaceBuilder.addMethod(method, event.getDescription(), Collections.singletonList(methodParam),
119+
EVENT_LISTENER_RESULT);
120+
121+
interfaceBuilder.addParametrizedMethodAnnotation(method, EVENT_NAME, event.getName());
122+
123+
if (Boolean.TRUE.equals(event.getDeprecated())) {
124+
interfaceBuilder.addMethodAnnotation(method, DEPRECATED_ANNOTATION);
125+
}
126+
127+
if (Boolean.TRUE.equals(event.getExperimental())) {
128+
interfaceBuilder.addMethodAnnotation(method, EXPERIMENTAL_ANNOTATION);
129+
}
130+
}
131+
}
132+
}
133+
134+
/**
135+
* Adds commands to this interface.
136+
*/
137+
private void addCommands(Domain domain, JavaInterfaceBuilder interfaceBuilder,
138+
DomainTypeResolver domainTypeResolver, List<Builder> builders) {
79139
List<Command> commands = domain.getCommands();
80140
if (CollectionUtils.isNotEmpty(commands)) {
81141
for (Command command : commands) {
@@ -85,12 +145,6 @@ public Builder build(Domain domain, DomainTypeResolver domainTypeResolver) {
85145
}
86146
}
87147
}
88-
89-
if (builders.isEmpty()) {
90-
return interfaceBuilder;
91-
}
92-
builders.add(interfaceBuilder);
93-
return new CombinedBuilders(builders);
94148
}
95149

96150
private void processCommand(Command command, Domain domain, JavaInterfaceBuilder interfaceBuilder,

cdtp-definition-builder/src/main/java/com/github/kklisura/cdtp/definition/builder/support/protocol/builder/EventBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class EventBuilder extends TypesBuilder {
3333
* @param typesPackageName Package name where types reside.
3434
*/
3535
public EventBuilder(String basePackageName, JavaBuilderFactory javaBuilderFactory, String typesPackageName) {
36-
super(basePackageName, javaBuilderFactory);
36+
super(basePackageName, javaBuilderFactory, true);
3737
this.typesPackageName = typesPackageName;
3838
}
3939

0 commit comments

Comments
 (0)