Skip to content
This repository was archived by the owner on Aug 13, 2020. It is now read-only.

Commit 414b6b4

Browse files
committed
Use base URI in JMS listener classnames for uniqueness
1 parent eed53a9 commit 414b6b4

File tree

16 files changed

+181
-167
lines changed

16 files changed

+181
-167
lines changed

generators/messaging-adapter-generator/src/main/java/uk/gov/justice/raml/jms/uri/BaseUri.java renamed to generators/generators-commons/src/main/java/uk/gov/justice/services/generators/commons/helper/MessagingBaseUri.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
package uk.gov.justice.raml.jms.uri;
1+
package uk.gov.justice.services.generators.commons.helper;
22

33

44
import static java.lang.String.format;
5+
import static uk.gov.justice.services.generators.commons.helper.Names.buildJavaFriendlyName;
56

67
import uk.gov.justice.services.core.annotation.Component;
78

@@ -11,15 +12,15 @@
1112
/**
1213
* Parses Raml base uri and exposes it's parts through accessor methods
1314
*/
14-
public class BaseUri {
15+
public class MessagingBaseUri {
1516

1617
private static final Pattern MESSAGING_BASE_URI_PATTERN
1718
= Pattern.compile("message://(event|command|query)/(api|controller|handler|listener|processor)/\\S+/(\\S+)");
1819
private final String tier;
1920
private final String pillar;
2021
private final String service;
2122

22-
public BaseUri(final String uriString) {
23+
public MessagingBaseUri(final String uriString) {
2324
final Matcher m = matcherOf(uriString);
2425
m.find();
2526
this.pillar = m.group(1);
@@ -76,4 +77,13 @@ public String adapterClientId() {
7677
return format("%s.%s.%s", service(), pillar(), tier());
7778
}
7879

80+
/**
81+
* Returns a camel case class name with all invalid characters removed
82+
*
83+
* @return camel case string with all invalid characters removed.
84+
*/
85+
public String toClassName() {
86+
final String uncleaned = format("%s %s %s", service(), pillar(), tier());
87+
return buildJavaFriendlyName(uncleaned);
88+
}
7989
}

generators/generators-commons/src/main/java/uk/gov/justice/services/generators/commons/helper/MessagingResourceUri.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55

66
public class MessagingResourceUri {
77

8-
private final String uriString;
8+
private final String resourceUri;
99

10-
public MessagingResourceUri(String uriString) {
11-
this.uriString = uriString;
10+
public MessagingResourceUri(final String resourceUri) {
11+
this.resourceUri = resourceUri;
1212
}
1313

1414
/**
@@ -17,7 +17,7 @@ public MessagingResourceUri(String uriString) {
1717
* @return messaging destination name
1818
*/
1919
public String destinationName() {
20-
return stripStart(uriString.trim(), "/");
20+
return stripStart(resourceUri.trim(), "/");
2121
}
2222

2323
/**
@@ -27,8 +27,8 @@ public String destinationName() {
2727
*/
2828
public String toClassName() {
2929

30-
String cleaned = uriString.replaceAll("[^A-Za-z0-9_$]", " ");
31-
30+
String cleaned = resourceUri.replaceAll("[^A-Za-z0-9_$]", " ");
31+
3232
return capitalize(cleaned, " _$0123456789".toCharArray())
3333
.replaceAll(" ", "")
3434
.replaceAll("^[0-9]+", "");
@@ -40,6 +40,6 @@ public String hyphenated() {
4040

4141
@Override
4242
public String toString() {
43-
return uriString;
43+
return resourceUri;
4444
}
4545
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package uk.gov.justice.services.generators.commons.helper;
2+
3+
import static org.hamcrest.core.Is.is;
4+
import static org.junit.Assert.assertFalse;
5+
import static org.junit.Assert.assertThat;
6+
import static org.junit.Assert.assertTrue;
7+
import static uk.gov.justice.services.core.annotation.Component.EVENT_LISTENER;
8+
import static uk.gov.justice.services.core.annotation.Component.EVENT_PROCESSOR;
9+
10+
import uk.gov.justice.services.generators.commons.helper.MessagingBaseUri;
11+
12+
import org.junit.Test;
13+
14+
public class MessagingBaseUriTest {
15+
@Test
16+
public void shouldReturnTier() throws Exception {
17+
assertThat(new MessagingBaseUri("message://event/listener/message/service1").tier(), is("listener"));
18+
assertThat(new MessagingBaseUri("message://event/processor/message/service2").tier(), is("processor"));
19+
}
20+
21+
@Test
22+
public void shouldReturnPillar() throws Exception {
23+
assertThat(new MessagingBaseUri("message://event/listener/message/service1").pillar(), is("event"));
24+
assertThat(new MessagingBaseUri("message://command/handler/message/service2").pillar(), is("command"));
25+
}
26+
27+
@Test
28+
public void shouldReturnService() throws Exception {
29+
assertThat(new MessagingBaseUri("message://event/listener/message/service1").service(), is("service1"));
30+
assertThat(new MessagingBaseUri("message://command/handler/message/service2").service(), is("service2"));
31+
}
32+
33+
@Test
34+
public void shouldReturnAdapterClientId() {
35+
assertThat(new MessagingBaseUri("message://event/listener/message/service1").adapterClientId(), is("service1.event.listener"));
36+
assertThat(new MessagingBaseUri("message://event/processor/message/service2").adapterClientId(), is("service2.event.processor"));
37+
}
38+
39+
@Test
40+
public void shouldReturnTrueIfValidBaseUri() {
41+
assertTrue(MessagingBaseUri.valid("message://event/listener/message/service1"));
42+
assertTrue(MessagingBaseUri.valid("message://event/processor/message/service2"));
43+
assertTrue(MessagingBaseUri.valid("message://command/controller/message/service2"));
44+
}
45+
46+
@Test
47+
public void shouldReturnTrueIfNotValidBaseUri() {
48+
assertFalse(MessagingBaseUri.valid("message://INVALID/listener/message/service1"));
49+
assertFalse(MessagingBaseUri.valid("message://event/INVALID/message/service2"));
50+
assertFalse(MessagingBaseUri.valid("message://command/controller/message"));
51+
}
52+
53+
54+
@Test
55+
public void shouldReturnComponent() {
56+
assertThat(new MessagingBaseUri("message://event/listener/message/service1").component(), is(EVENT_LISTENER));
57+
assertThat(new MessagingBaseUri("message://event/processor/message/service2").component(), is(EVENT_PROCESSOR));
58+
}
59+
60+
@Test
61+
public void shouldReturnClassName() {
62+
assertThat(new MessagingBaseUri("message://event/listener/message/system").toClassName(), is("SystemEventListener"));
63+
}
64+
}

generators/generators-commons/src/test/java/uk/gov/justice/services/generators/commons/helper/MessagingResourceUriTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,4 @@ public void shouldReturnHyphenatedStringRepresentation() {
3434
assertThat(new MessagingResourceUri("/systemScheduling.handler.command").hyphenated(), is("systemScheduling-handler-command"));
3535

3636
}
37-
38-
39-
}
37+
}

generators/messaging-adapter-generator/src/main/java/uk/gov/justice/raml/jms/core/EventFilterCodeGenerator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import static uk.gov.justice.services.generators.commons.helper.Names.buildJavaFriendlyName;
1212
import static uk.gov.justice.services.generators.commons.helper.Names.namesListStringFrom;
1313

14-
import uk.gov.justice.raml.jms.uri.BaseUri;
14+
import uk.gov.justice.services.generators.commons.helper.MessagingBaseUri;
1515
import uk.gov.justice.services.event.buffer.api.AbstractEventFilter;
1616

1717
import javax.annotation.Priority;
@@ -23,7 +23,7 @@
2323

2424
class EventFilterCodeGenerator {
2525

26-
TypeSpec generatedCodeFor(final Resource resource, final BaseUri baseUri) {
26+
TypeSpec generatedCodeFor(final Resource resource, final MessagingBaseUri baseUri) {
2727
return classBuilder(classNameOf(baseUri))
2828
.addModifiers(PUBLIC)
2929
.superclass(AbstractEventFilter.class)
@@ -42,7 +42,7 @@ TypeSpec generatedCodeFor(final Resource resource, final BaseUri baseUri) {
4242
* @param baseUri URI String to convert
4343
* @return camel case class name
4444
*/
45-
private String classNameOf(final BaseUri baseUri) {
45+
private String classNameOf(final MessagingBaseUri baseUri) {
4646
return format("%sEventFilter", buildJavaFriendlyName(baseUri.service()));
4747
}
4848

generators/messaging-adapter-generator/src/main/java/uk/gov/justice/raml/jms/core/JmsEndpointGenerator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import uk.gov.justice.raml.core.Generator;
99
import uk.gov.justice.raml.core.GeneratorConfig;
10-
import uk.gov.justice.raml.jms.uri.BaseUri;
10+
import uk.gov.justice.services.generators.commons.helper.MessagingBaseUri;
1111
import uk.gov.justice.raml.jms.validator.BaseUriRamlValidator;
1212
import uk.gov.justice.services.generators.commons.validator.CompositeRamlValidator;
1313
import uk.gov.justice.services.generators.commons.validator.ContainsActionsRamlValidator;
@@ -59,7 +59,7 @@ public void run(final Raml raml, final GeneratorConfig configuration) {
5959

6060

6161
private Stream<? extends TypeSpec> generatedClassesFrom(final Raml raml, final Resource resource, final GeneratorConfig configuration) {
62-
final BaseUri baseUri = new BaseUri(raml.getBaseUri());
62+
final MessagingBaseUri baseUri = new MessagingBaseUri(raml.getBaseUri());
6363
final boolean listenToAllMessages = shouldListenToAllMessages(resource, baseUri);
6464

6565
final TypeSpec messageListenerCode = messageListenerCodeGenerator.generatedCodeFor(resource, baseUri, listenToAllMessages, configuration);
@@ -79,11 +79,11 @@ private Stream<? extends TypeSpec> generatedClassesFrom(final Raml raml, final R
7979
therefore we need all messages with consecutive numbers there. Messages need to be in correct order in order to update the view correctly.
8080
*/
8181

82-
private boolean shouldGenerateEventFilter(final Resource resource, final BaseUri baseUri) {
82+
private boolean shouldGenerateEventFilter(final Resource resource, final MessagingBaseUri baseUri) {
8383
return EVENT_LISTENER.equals(baseUri.component()) && !containsGeneralJsonMimeType(resource.getActions());
8484
}
8585

86-
private boolean shouldListenToAllMessages(final Resource resource, final BaseUri baseUri) {
86+
private boolean shouldListenToAllMessages(final Resource resource, final MessagingBaseUri baseUri) {
8787
return EVENT_LISTENER.equals(baseUri.component()) || containsGeneralJsonMimeType(resource.getActions());
8888
}
8989

generators/messaging-adapter-generator/src/main/java/uk/gov/justice/raml/jms/core/MessageListenerCodeGenerator.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import static uk.gov.justice.services.generators.commons.helper.Names.namesListStringFrom;
1212

1313
import uk.gov.justice.raml.core.GeneratorConfig;
14-
import uk.gov.justice.raml.jms.uri.BaseUri;
14+
import uk.gov.justice.services.generators.commons.helper.MessagingBaseUri;
1515
import uk.gov.justice.services.adapter.messaging.JmsLoggerMetadataInterceptor;
1616
import uk.gov.justice.services.adapter.messaging.JmsProcessor;
1717
import uk.gov.justice.services.adapter.messaging.JsonSchemaValidationInterceptor;
@@ -78,7 +78,7 @@ class MessageListenerCodeGenerator {
7878
* @param baseUri the base URI
7979
* @return the message listener class specification
8080
*/
81-
TypeSpec generatedCodeFor(final Resource resource, final BaseUri baseUri, final boolean listenToAllMessages, final GeneratorConfig configuration) {
81+
TypeSpec generatedCodeFor(final Resource resource, final MessagingBaseUri baseUri, final boolean listenToAllMessages, final GeneratorConfig configuration) {
8282
return classSpecFrom(resource, baseUri, listenToAllMessages, configuration)
8383
.addMethod(generateOnMessageMethod())
8484
.build();
@@ -93,20 +93,20 @@ TypeSpec generatedCodeFor(final Resource resource, final BaseUri baseUri, final
9393
* @return the {@link TypeSpec.Builder} that defines the class
9494
*/
9595
private TypeSpec.Builder classSpecFrom(final Resource resource,
96-
final BaseUri baseUri,
96+
final MessagingBaseUri baseUri,
9797
final boolean listenToAllMessages,
9898
final GeneratorConfig generatorConfiguration) {
9999
final MessagingResourceUri resourceUri = new MessagingResourceUri(resource.getUri());
100100
final String component = componentOf(baseUri);
101101

102102
if (componentDestinationType.isSupported(component)) {
103103

104-
final TypeSpec.Builder typeSpecBuilder = classBuilder(classNameOf(resourceUri))
104+
final TypeSpec.Builder typeSpecBuilder = classBuilder(classNameOf(baseUri, resourceUri))
105105
.addModifiers(PUBLIC)
106106
.addSuperinterface(MessageListener.class)
107107
.addField(FieldSpec.builder(ClassName.get(Logger.class), LOGGER_FIELD)
108108
.addModifiers(PRIVATE, STATIC, FINAL)
109-
.initializer("$T.getLogger($L.class)", LoggerFactory.class, classNameOf(resourceUri))
109+
.initializer("$T.getLogger($L.class)", LoggerFactory.class, classNameOf(baseUri, resourceUri))
110110
.build())
111111
.addField(FieldSpec.builder(ClassName.get(InterceptorChainProcessor.class), INTERCEPTOR_CHAIN_PROCESS)
112112
.addAnnotation(Inject.class)
@@ -180,7 +180,7 @@ private MethodSpec generateOnMessageMethod() {
180180
private AnnotationSpec messageDrivenAnnotation(final String component,
181181
final Map<ActionType, Action> actions,
182182
final MessagingResourceUri resourceUri,
183-
final BaseUri baseUri, final boolean listenToAllMessages) {
183+
final MessagingBaseUri baseUri, final boolean listenToAllMessages) {
184184

185185
final Class<? extends Destination> inputType = componentDestinationType.inputTypeFor(component);
186186

@@ -230,11 +230,11 @@ private AnnotationSpec generateActivationConfigPropertyAnnotation(final String n
230230
/**
231231
* Convert given URI and component to a camel cased class name
232232
*
233-
* @param resourceUri URI String to convert
233+
* @param baseUri URI String to convert
234234
* @return camel case class name
235235
*/
236-
private String classNameOf(final MessagingResourceUri resourceUri) {
237-
return format("%sJmsListener", resourceUri.toClassName());
236+
private String classNameOf(final MessagingBaseUri baseUri, final MessagingResourceUri resourceUri) {
237+
return format("%s%sJmsListener", baseUri.toClassName(), resourceUri.toClassName());
238238
}
239239

240240
/**
@@ -243,7 +243,7 @@ private String classNameOf(final MessagingResourceUri resourceUri) {
243243
* @param baseUri base uri of the resource
244244
* @return component the value of the pillar and tier parts of the uri
245245
*/
246-
private String componentOf(final BaseUri baseUri) {
246+
private String componentOf(final MessagingBaseUri baseUri) {
247247
return Component.valueOf(baseUri.pillar(), baseUri.tier());
248248
}
249249

generators/messaging-adapter-generator/src/main/java/uk/gov/justice/raml/jms/validator/BaseUriRamlValidator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import static java.lang.String.format;
44
import static org.apache.commons.lang3.StringUtils.isEmpty;
55

6-
import uk.gov.justice.raml.jms.uri.BaseUri;
6+
import uk.gov.justice.services.generators.commons.helper.MessagingBaseUri;
77
import uk.gov.justice.services.generators.commons.validator.RamlValidationException;
88
import uk.gov.justice.services.generators.commons.validator.RamlValidator;
99

@@ -21,7 +21,7 @@ public void validate(final Raml raml) {
2121
if (isEmpty(raml.getBaseUri())) {
2222
throw new RamlValidationException(BASE_URI_NOT_SET_MSG);
2323
}
24-
if (!BaseUri.valid(raml.getBaseUri())) {
24+
if (!MessagingBaseUri.valid(raml.getBaseUri())) {
2525
throw new RamlValidationException(format(ERROR_MSG, raml.getBaseUri()));
2626
}
2727
}

0 commit comments

Comments
 (0)