package camelinaction; import org.apache.camel.Component; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; import org.apache.camel.api.management.ManagedAttribute; import org.apache.camel.api.management.ManagedOperation; import org.apache.camel.api.management.ManagedResource; import org.apache.camel.impl.DefaultEndpoint; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriPath; /** * Endpoint to simulate communication with ERP system which we want to manage from JMX. */ @UriEndpoint(scheme = "erp", title = "ERP", syntax = "erp:name", producerOnly = true, label = "legacy") @ManagedResource(description = "Managed ERPEndpoint") public class ERPEndpoint extends DefaultEndpoint { @UriPath private String name; @UriParam private boolean verbose; public ERPEndpoint(String endpointUri, Component component) { super(endpointUri, component); } public Producer createProducer() throws Exception { return new ERPProducer(this); } public Consumer createConsumer(Processor processor) throws Exception { throw new UnsupportedOperationException("Consumer not supported"); } public boolean isSingleton() { return true; } @ManagedAttribute(description = "Verbose logging enabled") public boolean isVerbose() { return verbose; } /** * Verbose logging enabled */ @ManagedAttribute(description = "Verbose logging enabled") public void setVerbose(boolean verbose) { this.verbose = verbose; } @ManagedAttribute(description = "Logical name of endpoint") public String getName() { return name; } /** * Logical name of endpoint. */ public void setName(String name) { this.name = name; } /** * Operation to perform a PING test of the ERP system. */ @ManagedOperation(description = "Ping test of the ERP system") public String ping() { return "PONG"; } }