How to use channel method of com.consol.citrus.channel.ChannelEndpointBuilder class

Best Citrus code snippet using com.consol.citrus.channel.ChannelEndpointBuilder.channel

Source:CitrusEndpoints.java Github

copy

Full Screen

...13 * See the License for the specific language governing permissions and14 * limitations under the License.15 */16package com.consol.citrus.dsl.endpoint;17import com.consol.citrus.channel.ChannelEndpointBuilder;18import com.consol.citrus.channel.ChannelSyncEndpointBuilder;19import com.consol.citrus.docker.client.DockerClientBuilder;20import com.consol.citrus.dsl.endpoint.jdbc.JdbcDbServerEndpointBuilder;21import com.consol.citrus.dsl.endpoint.selenium.SeleniumBrowserEndpointBuilder;22import com.consol.citrus.endpoint.Endpoint;23import com.consol.citrus.endpoint.EndpointBuilder;24import com.consol.citrus.ftp.client.*;25import com.consol.citrus.ftp.server.FtpServerBuilder;26import com.consol.citrus.ftp.server.SftpServerBuilder;27import com.consol.citrus.http.client.HttpClientBuilder;28import com.consol.citrus.http.server.HttpServerBuilder;29import com.consol.citrus.jms.endpoint.JmsEndpointBuilder;30import com.consol.citrus.jms.endpoint.JmsSyncEndpointBuilder;31import com.consol.citrus.jmx.client.JmxClientBuilder;32import com.consol.citrus.jmx.server.JmxServerBuilder;33import com.consol.citrus.kafka.endpoint.KafkaEndpointBuilder;34import com.consol.citrus.kubernetes.client.KubernetesClientBuilder;35import com.consol.citrus.mail.client.MailClientBuilder;36import com.consol.citrus.mail.server.MailServerBuilder;37import com.consol.citrus.rmi.client.RmiClientBuilder;38import com.consol.citrus.rmi.server.RmiServerBuilder;39import com.consol.citrus.ssh.client.SshClientBuilder;40import com.consol.citrus.ssh.server.SshServerBuilder;41import com.consol.citrus.vertx.endpoint.VertxEndpointBuilder;42import com.consol.citrus.vertx.endpoint.VertxSyncEndpointBuilder;43import com.consol.citrus.websocket.client.WebSocketClientBuilder;44import com.consol.citrus.websocket.server.WebSocketServerBuilder;45import com.consol.citrus.ws.client.WebServiceClientBuilder;46import com.consol.citrus.ws.server.WebServiceServerBuilder;47/**48 * @author Christoph Deppisch49 * @since 2.550 */51public abstract class CitrusEndpoints {52 /**53 * Prevent public instantiation.54 */55 protected CitrusEndpoints() {56 super();57 }58 /**59 * Creates new ChannelEndpoint sync or async builder.60 * @return61 */62 public static AsyncSyncEndpointBuilder<ChannelEndpointBuilder, ChannelSyncEndpointBuilder> channel() {63 return new AsyncSyncEndpointBuilder<>(new ChannelEndpointBuilder(), new ChannelSyncEndpointBuilder());64 }65 /**66 * Creates new JmsEndpoint sync or async builder.67 * @return68 */69 public static AsyncSyncEndpointBuilder<JmsEndpointBuilder, JmsSyncEndpointBuilder> jms() {70 return new AsyncSyncEndpointBuilder<>(new JmsEndpointBuilder(), new JmsSyncEndpointBuilder());71 }72 /**73 * Creates new HttpClient or HttpServer builder.74 * @return75 */76 public static ClientServerEndpointBuilder<HttpClientBuilder, HttpServerBuilder> http() {...

Full Screen

Full Screen

Source:ChannelEndpointBuilder.java Github

copy

Full Screen

...12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13 * See the License for the specific language governing permissions and14 * limitations under the License.15 */16package com.consol.citrus.channel;17import com.consol.citrus.endpoint.AbstractEndpointBuilder;18import org.springframework.integration.core.MessagingTemplate;19import org.springframework.messaging.MessageChannel;20import org.springframework.messaging.core.DestinationResolver;21/**22 * @author Christoph Deppisch23 * @since 2.7.624 */25public class ChannelEndpointBuilder extends AbstractEndpointBuilder<ChannelEndpoint> {26 /** Endpoint target */27 private ChannelEndpoint endpoint = new ChannelEndpoint();28 @Override29 protected ChannelEndpoint getEndpoint() {30 return endpoint;31 }32 /**33 * Sets the channelName property.34 * @param channelName35 * @return36 */37 public ChannelEndpointBuilder channel(String channelName) {38 endpoint.getEndpointConfiguration().setChannelName(channelName);39 return this;40 }41 /**42 * Sets the channel property.43 * @param channel44 * @return45 */46 public ChannelEndpointBuilder channel(MessageChannel channel) {47 endpoint.getEndpointConfiguration().setChannel(channel);48 return this;49 }50 /**51 * Sets the messagingTemplate property.52 * @param messagingTemplate53 * @return54 */55 public ChannelEndpointBuilder messagingTemplate(MessagingTemplate messagingTemplate) {56 endpoint.getEndpointConfiguration().setMessagingTemplate(messagingTemplate);57 return this;58 }59 /**60 * Sets the messageConverter property.61 * @param messageConverter62 * @return63 */64 public ChannelEndpointBuilder messageConverter(ChannelMessageConverter messageConverter) {65 endpoint.getEndpointConfiguration().setMessageConverter(messageConverter);66 return this;67 }68 /**69 * Sets the channel resolver.70 * @param resolver71 * @return72 */73 public ChannelEndpointBuilder channelResolver(DestinationResolver resolver) {74 endpoint.getEndpointConfiguration().setChannelResolver(resolver);75 return this;76 }77 /**78 * Sets the useObjectMessages property.79 * @param useObjectMessages80 * @return81 */82 public ChannelEndpointBuilder useObjectMessages(boolean useObjectMessages) {83 endpoint.getEndpointConfiguration().setUseObjectMessages(useObjectMessages);84 return this;85 }86 /**87 * Sets the default timeout....

Full Screen

Full Screen

Source:ChannelEndpointConfigParser.java Github

copy

Full Screen

...14 * limitations under the License.15 */16package com.consol.citrus.config.annotation;17import com.consol.citrus.TestActor;18import com.consol.citrus.channel.*;19import com.consol.citrus.context.ReferenceResolver;20import org.springframework.integration.core.MessagingTemplate;21import org.springframework.messaging.MessageChannel;22import org.springframework.messaging.core.DestinationResolver;23import org.springframework.util.StringUtils;24/**25 * @author Christoph Deppisch26 * @since 2.7.627 */28public class ChannelEndpointConfigParser extends AbstractAnnotationConfigParser<ChannelEndpointConfig, ChannelEndpoint> {29 /**30 * Constructor matching super.31 * @param referenceResolver32 */33 public ChannelEndpointConfigParser(ReferenceResolver referenceResolver) {34 super(referenceResolver);35 }36 @Override37 public ChannelEndpoint parse(ChannelEndpointConfig annotation) {38 ChannelEndpointBuilder builder = new ChannelEndpointBuilder();39 String channel = annotation.channel();40 String channelName = annotation.channelName();41 if (StringUtils.hasText(channel)) {42 builder.channel(getReferenceResolver().resolve(annotation.channel(), MessageChannel.class));43 }44 if (StringUtils.hasText(channelName)) {45 builder.channel(annotation.channelName());46 }47 if (StringUtils.hasText(annotation.messagingTemplate())) {48 //messagingTemplate49 String messagingTemplate = "messagingTemplate"; //default value50 if (StringUtils.hasText(annotation.messagingTemplate())) {51 messagingTemplate = annotation.messagingTemplate();52 }53 builder.messagingTemplate(getReferenceResolver().resolve(messagingTemplate, MessagingTemplate.class));54 }55 builder.useObjectMessages(annotation.useObjectMessages());56 if (StringUtils.hasText(annotation.messageConverter())) {57 builder.messageConverter(getReferenceResolver().resolve(annotation.messageConverter(), ChannelMessageConverter.class));58 }59 if (StringUtils.hasText(annotation.channelResolver())) {60 builder.channelResolver(getReferenceResolver().resolve(annotation.channelResolver(), DestinationResolver.class));61 }62 builder.timeout(annotation.timeout());63 if (StringUtils.hasText(annotation.actor())) {64 builder.actor(getReferenceResolver().resolve(annotation.actor(), TestActor.class));65 }66 return builder.initialize().build();67 }68}...

Full Screen

Full Screen

channel

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.samples;2import com.consol.citrus.dsl.endpoint.CitrusEndpoints;3import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;4import org.springframework.context.annotation.Bean;5import org.springframework.context.annotation.Configuration;6import org.springframework.integration.channel.DirectChannel;7import org.springframework.integration.channel.QueueChannel;8import org.springframework.integration.dsl.IntegrationFlow;9import org.springframework.integration.dsl.IntegrationFlows;10import org.testng.annotations.Test;11public class ChannelEndpointBuilderTest extends TestNGCitrusTestDesigner {12 protected void configure() {13 variable("name", "Test");14 variable("age", "20");15 variable("country", "India");16 echo("Sending Message to Channel");17 send(channel("channelEndpoint"))18 .payload("<person><name>${name}</name><age>${age}</age><country>${country}</country></person>");19 echo("Receiving Message from Channel");20 receive(channel("channelEndpoint"))21 .payload("<person><name>${name}</name><age>${age}</age><country>${country}</country></person>");22 }23 public static class EndpointConfig {24 public DirectChannel channelEndpoint() {25 return new DirectChannel();26 }27 public QueueChannel channelEndpointReply() {28 return new QueueChannel();29 }30 public IntegrationFlow channelEndpointFlow() {31 return IntegrationFlows.from(channelEndpoint())32 .transform(p -> p)33 .channel(channelEndpointReply())34 .get();35 }36 }37}

Full Screen

Full Screen

channel

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.dsl.endpoint;2import org.springframework.context.annotation.Bean;3import org.springframework.context.annotation.Configuration;4import org.springframework.context.annotation.Import;5import org.springframework.integration.channel.DirectChannel;6import org.springframework.integration.channel.QueueChannel;7import org.springframework.integration.channel.interceptor.WireTap;8import org.springframework.integration.dsl.IntegrationFlow;9import org.springframework.integration.dsl.IntegrationFlows;10import org.springframework.integration.store.MessageGroupStore;11import org.springframework.integration.store.SimpleMessageStore;12import org.springframework.integration.support.channel.BeanFactoryChannelResolver;13import org.springframework.messaging.MessageChannel;14import com.consol.citrus.channel.ChannelEndpoint;15import com.consol.citrus.channel.ChannelEndpointBuilder;16import com.consol.citrus.dsl.runner.TestRunner;17import com.consol.citrus.message.MessageQueue;18import com.consol.citrus.message.MessageQueueBuilder;19import com.consol.citrus.message.MessageQueueChannel;20import com.consol.citrus.message.MessageQueueChannelBuilder;21import com.consol.citrus.message.MessageQueueConsumer;22import com.consol.citrus.message.MessageQueueConsumerBuilder;23import com.consol.citrus.message.MessageQueueProducer;24import com.consol.citrus.message.MessageQueueProducerBuilder;25import com.consol.citrus.message.MessageQueueReceiver;26import com.consol.citrus.message.MessageQueueReceiverBuilder;27import com.consol.citrus.message.MessageQueueSender;28import com.consol.citrus.message.MessageQueueSenderBuilder;29import com.consol.citrus.message.MessageQueueStore;30import com.consol.citrus.message.MessageQueueStoreBuilder;31import com.consol.citrus.message.MessageQueueStub;32import com.consol.citrus.message.MessageQueueStubBuilder;33import com.consol.citrus.message.MessageQueueTestSupport;34import com.consol.citrus.message.MessageQueueTestSupportBuilder;35import com.consol.citrus.message.PollableChannelEndpoint;36import com.consol.citrus.message.PollableChannelEndpointBuilder;37import com.consol.citrus.message.ReplyMessageChannel;38import com.consol.citrus.message.ReplyMessageChannelBuilder;39import com.consol.citrus.message.ReplyMessageCorrelator;40import com.consol.citrus.message.ReplyMessageCorrelatorBuilder;41import com.consol.citrus.message.ReplyMessageHandler;42import com.consol.citrus.message.ReplyMessageHandlerBuilder;43import com.consol.citrus.message.ReplyMessage

Full Screen

Full Screen

channel

Using AI Code Generation

copy

Full Screen

1package org.mycompany;2import org.springframework.context.annotation.Bean;3import org.springframework.context.annotation.Configuration;4import org.springframework.integration.channel.DirectChannel;5import org.springframework.integration.channel.QueueChannel;6import org.springframework.integration.dsl.IntegrationFlow;7import org.springframework.integration.dsl.IntegrationFlows;8import org.springframework.integration.dsl.MessageChannels;9public class ChannelConfig {10public DirectChannel requestChannel() {11return MessageChannels.direct().get();12}13public QueueChannel responseChannel() {14return MessageChannels.queue().get();15}16public IntegrationFlow integrationFlow() {17.from(requestChannel())18.transform("payload")19.channel(responseChannel())20.get();21}22}23package org.mycompany;24import com.consol.citrus.dsl.endpoint.CitrusEndpoints;25import com.consol.citrus.dsl.runner.TestRunner;26import com.consol.citrus.dsl.testng.TestNGCitrusTest;27import com.consol.citrus.message.MessageType;28import org.springframework.beans.factory.annotation.Autowired;29import org.springframework.context.annotation.Import;30import org.testng.annotations.Test;31@Import(ChannelConfig.class)32public class ChannelIT extends TestNGCitrusTest {33private TestRunner runner;34private DirectChannel requestChannel;35private QueueChannel responseChannel;36public void testChannel() {37.channel()38.endpoint(requestChannel)39.endpoint(responseChannel)40.messageType(MessageType.PLAINTEXT)41.build()42.send(runner, runner.receive(runner.messageBuilder()43.payload("Hello Citrus!")44.build()));45}46}47package org.mycompany;48import com.consol.citrus.dsl.endpoint.CitrusEndpoints;49import com.consol.citrus.dsl.runner.TestRunner;50import com.consol.citrus.dsl.testng.TestNGCitrusTest;51import com.consol.citrus.message.MessageType;52import org.springframework.beans.factory.annotation.Autowired;53import org.springframework.context.annotation.Import;54import org.testng.annotations.Test;55@Import(ChannelConfig.class)56public class ChannelIT extends TestNGCitrusTest {57private TestRunner runner;58private DirectChannel requestChannel;59private QueueChannel responseChannel;60public void testChannel() {61.channel()62.endpoint(requestChannel)63.endpoint(responseChannel)64.messageType(Message

Full Screen

Full Screen

channel

Using AI Code Generation

copy

Full Screen

1public class ChannelEndpointBuilderTest extends TestNGCitrusTestDesigner {2 private ApplicationContext applicationContext;3 private MessageChannel channel;4 public void channelEndpointBuilderTest() {5 echo("channelEndpointBuilderTest: start");6 echo("channelEndpointBuilderTest: create channelEndpointBuilder");7 ChannelEndpointBuilder channelEndpointBuilder = new ChannelEndpointBuilder();8 echo("channelEndpointBuilderTest: set channel");9 channelEndpointBuilder.channel(channel);10 echo("channelEndpointBuilderTest: set channelName");11 channelEndpointBuilder.channelName("channelName");12 echo("channelEndpointBuilderTest: set channelResolver");13 channelEndpointBuilder.channelResolver(new ChannelResolver() {14 public MessageChannel resolveDestination(String channelName) {15 return channel;16 }17 });18 echo("channelEndpointBuilderTest: set applicationContext");19 channelEndpointBuilder.applicationContext(applicationContext);20 echo("channelEndpointBuilderTest: set messageConverter");21 channelEndpointBuilder.messageConverter(new SimpleMessageConverter());22 echo("channelEndpointBuilderTest: set messageCorrelator");23 channelEndpointBuilder.messageCorrelator(new DefaultMessageCorrelator());24 echo("channelEndpointBuilderTest: set messageSelector");25 channelEndpointBuilder.messageSelector(new DefaultMessageSelector());26 echo("channelEndpointBuilderTest: set messageSelectorExpression");27 channelEndpointBuilder.messageSelectorExpression("messageSelectorExpression");28 echo("channelEndpointBuilderTest: set messageSelectorExpressionParser");29 channelEndpointBuilder.messageSelectorExpressionParser(new SpelExpressionParser());30 echo("channelEndpointBuilderTest: set messageSelectorType");31 channelEndpointBuilder.messageSelectorType("messageSelectorType");32 echo("channelEndpointBuilderTest: set messageSelectorValue");33 channelEndpointBuilder.messageSelectorValue("messageSelectorValue");34 echo("channelEndpointBuilderTest: set messageSelectorValueParser");35 channelEndpointBuilder.messageSelectorValueParser(new SimpleMessageSelectorValueParser());36 echo("channelEndpointBuilderTest: set timeout");37 channelEndpointBuilder.timeout(1000L);38 echo("channelEndpointBuilderTest: set pollInterval");39 channelEndpointBuilder.pollInterval(1000L);40 echo("channelEndpointBuilderTest: set autoStart");41 channelEndpointBuilder.autoStart(true);42 echo("channelEndpointBuilderTest: set endpointConfiguration");43 channelEndpointBuilder.endpointConfiguration(new ChannelEndpointConfiguration());44 echo("channelEndpointBuilderTest: set messageChannel");

Full Screen

Full Screen

channel

Using AI Code Generation

copy

Full Screen

1public class 4 {2 public static void main(String[] args) {3 new Citrus().run(new TestBuilder() {4 public void configure() {5 echo("Hello World!");6 channel(builder -> builder.endpoint("myChannel"));7 }8 });9 }10}11public class 5 {12 public static void main(String[] args) {13 new Citrus().run(new TestBuilder() {14 public void configure() {15 echo("Hello World!");16 channel(builder -> builder.endpoint("myChannel"));17 }18 });19 }20}21public class 6 {22 public static void main(String[] args) {23 new Citrus().run(new TestBuilder() {24 public void configure() {25 echo("Hello World!");26 channel(builder -> builder.endpoint("myChannel"));27 }28 });29 }30}31public class 7 {32 public static void main(String[] args) {33 new Citrus().run(new TestBuilder() {34 public void configure() {35 echo("Hello World!");36 channel(builder -> builder.endpoint("myChannel"));37 }38 });39 }40}41public class 8 {42 public static void main(String[] args) {43 new Citrus().run(new TestBuilder() {44 public void configure() {45 echo("Hello World!");46 channel(builder -> builder.endpoint("myChannel"));47 }48 });49 }50}51public class 9 {52 public static void main(String[] args) {53 new Citrus().run(new TestBuilder() {54 public void configure() {55 echo("Hello World!");56 channel(builder -> builder.endpoint("myChannel"));57 }58 });59 }60}

Full Screen

Full Screen

channel

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.samples;2import java.util.HashMap;3import java.util.Map;4import org.testng.Assert;5import org.testng.annotations.Test;6import com.consol.citrus.annotations.CitrusTest;7import com.consol.citrus.channel.ChannelEndpoint;8import com.consol.citrus.channel.ChannelEndpointBuilder;9import com.consol.citrus.channel.ChannelSyncEndpoint;10import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;11import com.consol.citrus.message.MessageType;12public class ChannelTest extends TestNGCitrusTestDesigner {13 public void testChannel() {14 ChannelEndpoint channel = new ChannelEndpointBuilder()15 .channelName("myChannel")16 .channelType(ChannelEndpointBuilder.ChannelType.QUEUE)17 .messageType(MessageType.PLAINTEXT)18 .build();19 send(channel).payload("Test Message");20 receive(channel).payload("Test Message");21 }22 public void testChannelSync() {23 ChannelSyncEndpoint channel = new ChannelEndpointBuilder()24 .channelName("myChannel")25 .channelType(ChannelEndpointBuilder.ChannelType.QUEUE)26 .messageType(MessageType.PLAINTEXT)27 .build();28 send(channel).payload("Test Message");29 receive(channel).payload("Test Message");30 }31 public void testChannelSyncWithTimeout() {32 ChannelSyncEndpoint channel = new ChannelEndpointBuilder()33 .channelName("myChannel")34 .channelType(ChannelEndpointBuilder.ChannelType.QUEUE)35 .messageType(MessageType.PLAINTEXT)36 .timeout(5000L)37 .build();38 send(channel).payload("Test Message");39 receive(channel).payload("Test Message");40 }41 public void testChannelSyncWithTimeoutAndSelector() {

Full Screen

Full Screen

channel

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus;2import com.consol.citrus.dsl.builder.ReceiveMessageBuilder;3import com.consol.citrus.dsl.builder.SendMessageBuilder;4import com.consol.citrus.dsl.runner.TestRunner;5import com.consol.citrus.dsl.testng.TestNGCitrusTest;6import org.springframework.beans.factory.annotation.Autowired;7import org.springframework.context.annotation.Bean;8import org.springframework.context.annotation.Configuration;9import org.springframework.integration.channel.QueueChannel;10import org.springframework.integration.dsl.IntegrationFlow;11import org.springframework.integration.dsl.IntegrationFlows;12import org.springframework.integration.dsl.MessageChannels;13import org.springframework.integration.dsl.StandardIntegrationFlow;14import org.springframework.integration.dsl.channel.MessageChannelSpec;15import org.springframework.integration.dsl.channel.PollableChannelSpec;16import org.springframework.integration.dsl.support.Consumer;17import org.testng.annotations.Test;18public class ChannelEndpointBuilderTest extends TestNGCitrusTest {19 private TestRunner runner;20 public QueueChannel channel() {21 return MessageChannels.queue(10).get();22 }23 public IntegrationFlow channelFlow() {24 return IntegrationFlows.from("channel").handle("testBean", "handle").get();25 }26 public void testChannelEndpoint() {27 runner.echo("Testing Channel Endpoint");28 runner.receive(channelEndpointBuilder -> channelEndpointBuilder29 .channel(channel())30 .messageType(MessageType.PLAINTEXT)31 .payload("Hello World!"));32 runner.send(channelEndpointBuilder -> channelEndpointBuilder33 .channel(channel())34 .messageType(MessageType.PLAINTEXT)35 .payload("Hello World!"));36 }37}38package com.consol.citrus;39import com.consol.citrus.dsl.builder.ReceiveMessageBuilder;40import com.consol.citrus.dsl.builder.SendMessageBuilder;41import com.consol.citrus.dsl.runner.TestRunner;42import com.consol.citrus.dsl.testng.TestNGCitrusTest;43import org.springframework.beans.factory.annotation.Autowired;44import org.springframework.context.annotation.Bean;45import org.springframework.context.annotation.Configuration;46import org.springframework.integration.channel.QueueChannel;47import org.springframework.integration.dsl.IntegrationFlow;48import org.springframework.integration.dsl.IntegrationFlows

Full Screen

Full Screen

channel

Using AI Code Generation

copy

Full Screen

1package com.consol.citrus.dsl.testng;2import org.testng.annotations.Test;3import com.consol.citrus.annotations.CitrusTest;4import com.consol.citrus.annotations.CitrusXmlTest;5import com.consol.citrus.testng.CitrusParameters;6public class ChannelIT extends AbstractTestNGCitrusTest {7 @CitrusXmlTest(name = "ChannelIT")8 public void ChannelIT() {}9}10 <import resource="classpath:com/consol/citrus/dsl/runner/testng/testng-xml-test-context.xml"/>11Citrus channel() method12Citrus channelEndpoint() method13The channelEndpoint() method is used to create a new channel endpoint builder instance. This method takes no

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Citrus automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful