use of io.fabric8.annotations.Factory in project fabric8 by jboss-fuse.
the class FabricDiscovery method addingService.
@Override
public CuratorFramework addingService(ServiceReference<CuratorFramework> reference) {
CuratorFramework curator = context.getService(reference);
try {
logger.debug("CuratorFramework found, starting group");
GroupFactory factory = new ZooKeeperGroupFactory(curator);
singleton = factory.createGroup("/fabric/registry/clusters/elasticsearch/" + clusterName.value(), ESNode.class);
singleton.add(this);
singleton.update(new ESNode(clusterName.value(), localNode, false));
singleton.start();
} catch (Exception e) {
LOG.error("Error starting group", e);
}
return curator;
}
use of io.fabric8.annotations.Factory in project fabric8 by jboss-fuse.
the class ExtendedBurnIn method lotsOfClientLoad.
@Test
public void lotsOfClientLoad() throws Exception {
startRestEndpoint();
startHttpGateway();
DetectingGateway gateway = startDetectingGateway();
final ShutdownTracker tracker = new ShutdownTracker();
// Run some concurrent load against the broker via the gateway...
final StompJmsConnectionFactory factory = new StompJmsConnectionFactory();
factory.setBrokerURI("tcp://localhost:" + gateway.getBoundPort());
for (int client = 0; client < 10; client++) {
new Thread("JMS Client: " + client) {
@Override
public void run() {
while (tracker.attemptRetain()) {
try {
Connection connection = factory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer consumer = session.createConsumer(session.createTopic("FOO"));
MessageProducer producer = session.createProducer(session.createTopic("FOO"));
producer.send(session.createTextMessage("Hello"));
consumer.receive(1000);
connection.close();
} catch (JMSException e) {
e.printStackTrace();
} finally {
tracker.release();
}
}
}
}.start();
}
int httpPort = gateway.getBoundPort();
final URL httpUrl = new URL("http://localhost:" + httpPort + "/hello/world");
for (int client = 0; client < 10; client++) {
new Thread("HTTP Client: " + client) {
@Override
public void run() {
while (tracker.attemptRetain()) {
try {
InputStream is = httpUrl.openConnection().getInputStream();
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int c = 0;
while ((c = is.read()) >= 0) {
baos.write(c);
}
assertEquals("Hello World!", new String(baos.toByteArray()));
} finally {
is.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
tracker.release();
}
}
}
}.start();
}
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
// Lets monitor memory usage for 5 min..
for (int i = 0; i < 60 * 5; i++) {
Thread.sleep(900);
Runtime.getRuntime().gc();
Thread.sleep(100);
long usedMB = ((Long) ((CompositeData) mBeanServer.getAttribute(new ObjectName("java.lang:type=Memory"), "HeapMemoryUsage")).get("used")).longValue() / (1024 * 1024);
System.out.println("Using " + usedMB + " MB of heap.");
}
tracker.stop();
}
use of io.fabric8.annotations.Factory in project fabric8 by fabric8io.
the class Fabric8Extension method afterDiscovery.
public void afterDiscovery(@Observes final AfterBeanDiscovery event, BeanManager beanManager) {
KubernetesHolder.useBeanManager(beanManager);
// Only add the bean if no other bean is found.
if (beanManager.getBeans(KubernetesClient.class).isEmpty()) {
event.addBean(new KubernetesClientBean());
}
// We need to process factories in reverse order so that we make feasible forwarding for service id etc.
List<FactoryMethodContext> reverseFactories = new ArrayList<>(FactoryMethodContext.sort(factories));
Collections.reverse(reverseFactories);
for (final FactoryMethodContext factoryMethodContext : reverseFactories) {
ServiceBean.doWith(factoryMethodContext.getReturnType(), new ServiceBean.Callback() {
@Override
public ServiceBean apply(ServiceBean bean) {
String serviceId = bean.getServiceName();
String serviceProtocol = or(bean.getServiceProtocol(), getFactoryMethodProtocol(factoryMethodContext.getFactoryMethod().getJavaMember()));
String servicePort = or(bean.getServicePort(), getFactoryMethodPort(factoryMethodContext.getFactoryMethod().getJavaMember()));
String servicePath = or(bean.getServicePath(), getFactoryMethodPath(factoryMethodContext.getFactoryMethod().getJavaMember()));
Boolean serviceExternal = bean.getServiceExternal();
Boolean serviceEndpoint = bean.getServiceEndpoint();
// Ensure that there is a factory String -> sourceType before adding producer.
if (!String.class.equals(factoryMethodContext.getSourceType())) {
ServiceBean.getBean(serviceId, serviceProtocol, servicePort, servicePath, null, serviceEndpoint, serviceExternal, factoryMethodContext.getSourceType());
}
return bean.withProducer(new FactoryMethodProducer(factoryMethodContext.getBean(), factoryMethodContext.getFactoryMethod(), serviceId, serviceProtocol, servicePort, servicePath));
}
});
}
for (ServiceUrlBean bean : ServiceUrlBean.getBeans()) {
event.addBean(bean);
}
for (ServiceUrlCollectionBean bean : ServiceUrlCollectionBean.getBeans()) {
event.addBean(bean);
}
for (ServiceBean bean : ServiceBean.getBeans()) {
if (bean.getProducer() != null) {
event.addBean(bean);
}
}
for (ConfigurationBean b : ConfigurationBean.getBeans()) {
event.addBean(b);
}
}
use of io.fabric8.annotations.Factory in project fabric8 by fabric8io.
the class Fabric8Extension method onManagedBean.
public <X> void onManagedBean(@Observes final ProcessManagedBean<X> event) {
for (final AnnotatedMethod<?> method : event.getAnnotatedBeanClass().getMethods()) {
final Factory factory = method.getAnnotation(Factory.class);
if (factory != null) {
final Type sourceType = getSourceType(method);
final Type returnType = method.getJavaMember().getReturnType();
factories.add(new FactoryMethodContext(event.getBean(), sourceType, returnType, method));
}
}
}
use of io.fabric8.annotations.Factory in project docker-maven-plugin by fabric8io.
the class AuthConfigFactoryTest method containerSetup.
@Before
public void containerSetup() throws ComponentLookupException {
final SecDispatcher secDispatcher = new MockSecDispatcher();
new Expectations() {
{
container.lookup(SecDispatcher.ROLE, "maven");
minTimes = 0;
result = secDispatcher;
}
};
factory = new AuthConfigFactory(container);
factory.setLog(log);
gsonBuilder = new GsonBuilder();
}
Aggregations