Skip to content

Commit

Permalink
WELD-1794 Few other improvements
Browse files Browse the repository at this point in the history
- Probe - make sure the bean is truly enabled
- Observer list - allow to filter by the kind of the declaring bean
- better formatting of AnnotatedMethods
  • Loading branch information
mkouba committed Jan 15, 2015
1 parent 2ac1acd commit f9916d3
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 20 deletions.
30 changes: 29 additions & 1 deletion probe/core/src/main/client/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -187,10 +187,14 @@ Probe.ObserverListRoute = Ember.Route
txPhase : {
refreshModel : true
},
kind : {
refreshModel : true
},
},
setupController : function(controller, model) {
this._super(controller, model);
controller.set("pages", buildPages(model.page, model.lastPage));
controller.set("cache", cache);
},
model : function(params) {
var query = '', filters = '', page = '';
Expand All @@ -210,6 +214,13 @@ Probe.ObserverListRoute = Ember.Route
}
});
}
if (params.kind) {
beanKinds.forEach(function(kind) {
if (kind == params.kind) {
filters = appendToFilters(filters, 'kind', kind);
}
});
}
if (params.txPhase) {
txPhases.forEach(function(txPhase) {
if (txPhase == params.txPhase) {
Expand Down Expand Up @@ -382,22 +393,25 @@ Probe.ObserverListController = Ember.ObjectController.extend({
this.set('initialized', true);
this.set('receptions', receptions);
this.set('txPhases', txPhases);
this.set('beanKinds', beanKinds);
},
observedType : '',
beanClass : '',
reception : null,
txPhase : null,
qualifier : '',
declaringBean : '',
kind : null,
page : 1,
queryParams : [ 'observedType', 'beanClass', 'reception', 'txPhase',
'declaringBean', 'qualifier', 'page' ],
'declaringBean', 'qualifier', 'page', 'kind' ],
actions : {
clearFilters : function() {
this.set('observedType', '');
this.set('beanClass', '');
this.set('reception', null);
this.set('txPhase', null);
this.set('kind', null);
this.set('declaringBean', '');
this.set('qualifier', '');
this.send("refreshData");
Expand Down Expand Up @@ -437,6 +451,20 @@ Ember.Handlebars.registerBoundHelper('increment', function(integer) {
return integer + 1;
});

Ember.Handlebars.registerBoundHelper('at', function() {
return '@';
});

Ember.Handlebars.registerBoundHelper('substr', function(text, limit) {
if (text.length > limit) {
var start = text.length - limit - 3;
var end = text.length;
return '...' + text.substring(start, end);
} else {
return text;
}
});

Ember.Handlebars.registerBoundHelper('eachItemOnNewLine', function(items,
options) {
var ret = '';
Expand Down
9 changes: 5 additions & 4 deletions probe/core/src/main/client/probe.html
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ <h2>Bean detail</h2>
{{#each qualifiers}}
<p class="form-control-static">{{this}}</p>
{{/each}}
<span class="help-block">javax.enterprise.inject.Any</span>
<span class="help-block">{{at}}Any</span>
</div>
</div>
{{#if stereotypes}}
Expand Down Expand Up @@ -353,6 +353,7 @@ <h2>Observer methods</h2>
<table class="table table-bordered table-striped">
<tr>
<th></th>
<th>Declaring Bean Kind {{view 'select' content=beanKinds value=kind prompt="-- ANY --" class="form-control"}}</th>
<th>
Declaring Bean (or Bean Class if N/A)
<form {{action "filter" on="submit"}}>
Expand All @@ -377,15 +378,16 @@ <h2>Observer methods</h2>
{{#each data}}
<tr>
<td>{{increment _view.contentIndex}}</td>
<td>{{#if declaringBean}}<span class="{{unbound declaringBean.kind}} boxed">{{unbound declaringBean.kind}}</span>{{/if}}</td>
<td>
{{#if declaringBean}}
{{#link-to 'beanDetail' declaringBean.id}}{{unbound declaringBean.beanClass}}{{/link-to}}
{{#link-to 'beanDetail' declaringBean.id}}{{substr declaringBean.beanClass 60}}{{/link-to}}
{{else}}
{{unbound beanClass}}
{{/if}}
</td>
<td>
{{#link-to 'observerDetail' id}}{{unbound observedType}}{{/link-to}}
{{#link-to 'observerDetail' id}}{{substr observedType 60}}{{/link-to}}
</td>
<td>
{{eachItemOnNewLine qualifiers}}
Expand Down Expand Up @@ -439,7 +441,6 @@ <h2>Observer method detail</h2>
{{#each qualifiers}}
<p class="form-control-static">{{this}}</p>
{{/each}}
<span class="help-block">javax.enterprise.inject.Any</span>
</div>
</div>
{{/if}}
Expand Down
49 changes: 36 additions & 13 deletions probe/core/src/main/java/org/jboss/weld/probe/JsonObjects.java
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.enterprise.context.ContextNotActiveException;
Expand Down Expand Up @@ -111,6 +110,13 @@
*/
final class JsonObjects {

private static final Comparator<BeanDeploymentArchive> bdaComparator = new Comparator<BeanDeploymentArchive>() {
@Override
public int compare(BeanDeploymentArchive o1, BeanDeploymentArchive o2) {
return o1.getId().compareTo(o2.getId());
}
};

private JsonObjects() {
}

Expand All @@ -132,23 +138,25 @@ static String createDeploymentJson(BeanManagerImpl beanManager) {
Map<BeanDeploymentArchive, BeanManagerImpl> beanDeploymentArchivesMap = Container.instance(beanManager).beanDeploymentArchives();
JsonObjectBuilder deploymentBuilder = Json.newObjectBuilder();

JsonArrayBuilder bdasBuilder = Json.newArrayBuilder();
// BEAN DEPLOYMENT ARCHIVES
for (Entry<BeanDeploymentArchive, BeanManagerImpl> entry : beanDeploymentArchivesMap.entrySet()) {
JsonArrayBuilder bdasBuilder = Json.newArrayBuilder();
List<BeanDeploymentArchive> bdas = new ArrayList<BeanDeploymentArchive>(beanDeploymentArchivesMap.keySet());
Collections.sort(bdas, bdaComparator);
for (BeanDeploymentArchive bda : bdas) {
JsonObjectBuilder bdaBuilder = Json.newObjectBuilder();
String id = entry.getKey().getId();
String id = bda.getId();
bdaBuilder.add(BDA_ID, id);
bdaBuilder.add(ID, Components.getId(id));
BeansXml beansXml = entry.getKey().getBeansXml();
BeansXml beansXml = bda.getBeansXml();
if (beansXml != null) {
bdaBuilder.add(BEAN_DISCOVERY_MODE, beansXml.getBeanDiscoveryMode().toString());
}
bdasBuilder.add(bdaBuilder);
}
deploymentBuilder.add(BDAS, bdasBuilder);

JsonArrayBuilder configBuilder = Json.newArrayBuilder();
// CONFIGURATION
JsonArrayBuilder configBuilder = Json.newArrayBuilder();
WeldConfiguration configuration = beanManager.getServices().get(WeldConfiguration.class);
for (ConfigurationKey key : ConfigurationKey.values()) {
Object defaultValue = key.getDefaultValue();
Expand Down Expand Up @@ -260,13 +268,13 @@ static String createFullBeanJson(Bean<?> bean, boolean transientDependencies, bo
if (producerBean.getProducer() instanceof ProducerMethodProducer) {
ProducerMethodProducer<?, ?> producer = (ProducerMethodProducer<?, ?>) producerBean.getProducer();
if (producer.getDisposalMethod() != null) {
beanBuilder.add(DISPOSAL_METHOD, producer.getDisposalMethod().getAnnotated().getJavaMember().toGenericString());
beanBuilder.add(DISPOSAL_METHOD, annotatedMethodToString(producer.getDisposalMethod().getAnnotated(), bean.getBeanClass()));
}
beanBuilder.add(PRODUCER_METHOD, ((AnnotatedMethod<?>) producer.getAnnotated()).getJavaMember().toGenericString());
beanBuilder.add(PRODUCER_METHOD, annotatedMethodToString((AnnotatedMethod<?>) producer.getAnnotated(), bean.getBeanClass()));
} else if (producerBean.getProducer() instanceof ProducerFieldProducer) {
ProducerFieldProducer<?, ?> producer = (ProducerFieldProducer<?, ?>) producerBean.getProducer();
if (producer.getDisposalMethod() != null) {
beanBuilder.add(DISPOSAL_METHOD, producer.getDisposalMethod().getAnnotated().getJavaMember().toGenericString());
beanBuilder.add(DISPOSAL_METHOD, annotatedMethodToString(producer.getDisposalMethod().getAnnotated(), bean.getBeanClass()));
}
beanBuilder.add(PRODUCER_FIELD, producer.getAnnotated().getJavaMember().toGenericString());
}
Expand All @@ -290,8 +298,7 @@ static String createFullBeanJson(Bean<?> bean, boolean transientDependencies, bo
JsonObjectBuilder observerBuilder = createSimpleObserverJson(observerMethodImpl, probe);
observerBuilder.add(RECEPTION, observerMethodImpl.getReception().toString());
observerBuilder.add(TX_PHASE, observerMethodImpl.getTransactionPhase().toString());
// observerBuilder.add(ANNOTATED_METHOD,
// observerMethodImpl.getMethod().getAnnotated().getJavaMember().toGenericString())
// observerBuilder.add(ANNOTATED_METHOD, annotatedMethodToString(observerMethodImpl.getMethod().getAnnotated(), bean.getBeanClass()));
declaredObservers.add(observerBuilder);
}
}
Expand All @@ -310,7 +317,7 @@ static String createFullBeanJson(Bean<?> bean, boolean transientDependencies, bo
JsonObjectBuilder producerBuilder = createSimpleBeanJson(candidate, probe);
if (producerBean.getProducer() instanceof ProducerMethodProducer) {
ProducerMethodProducer<?, ?> producer = (ProducerMethodProducer<?, ?>) producerBean.getProducer();
producerBuilder.add(PRODUCER_INFO, ((AnnotatedMethod<?>) producer.getAnnotated()).getJavaMember().toGenericString());
producerBuilder.add(PRODUCER_INFO, annotatedMethodToString((AnnotatedMethod<?>) producer.getAnnotated(), bean.getBeanClass()));
} else if (producerBean.getProducer() instanceof ProducerFieldProducer) {
ProducerFieldProducer<?, ?> producer = (ProducerFieldProducer<?, ?>) producerBean.getProducer();
producerBuilder.add(PRODUCER_INFO, producer.getAnnotated().getJavaMember().toGenericString());
Expand Down Expand Up @@ -476,7 +483,7 @@ static String createFullObserverJson(ObserverMethod<?> observerMethod, Probe pro
JsonObjectBuilder observerBuilder = createBasicObserverJson(observerMethod, probe);
if (observerMethod instanceof ObserverMethodImpl) {
ObserverMethodImpl<?, ?> observerMethodImpl = (ObserverMethodImpl<?, ?>) observerMethod;
observerBuilder.add(ANNOTATED_METHOD, observerMethodImpl.getMethod().getAnnotated().getJavaMember().toGenericString());
observerBuilder.add(ANNOTATED_METHOD, annotatedMethodToString(observerMethodImpl.getMethod().getAnnotated(), observerMethodImpl.getBeanClass()));
}
return observerBuilder.build();
}
Expand Down Expand Up @@ -629,4 +636,20 @@ static String createPageJson(Page<?> page, JsonArrayBuilder data) {
return Json.newObjectBuilder().add(PAGE, page.getIdx()).add(LAST_PAGE, page.getLastIdx()).add(TOTAL, page.getTotal()).add(DATA, data).build();
}

static String annotatedMethodToString(AnnotatedMethod<?> method, Class<?> beanClass) {
StringBuilder builder = new StringBuilder();
builder.append(Formats.addSpaceIfNeeded(Formats.formatAnnotations(method.getAnnotations())));
builder.append(Formats.formatModifiers(method.getJavaMember().getModifiers()));
builder.append(' ');
builder.append(method.getJavaMember().getReturnType().getName());
builder.append(' ');
if (!beanClass.getName().equals(method.getDeclaringType().getJavaClass().getName())) {
builder.append(method.getDeclaringType().getJavaClass().getName());
builder.append('.');
}
builder.append(method.getJavaMember().getName());
builder.append(Formats.formatAsFormalParameterList(method.getParameters()));
return builder.toString();
}

}
5 changes: 4 additions & 1 deletion probe/core/src/main/java/org/jboss/weld/probe/Probe.java
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,10 @@ public void intitialize(BeanManagerImpl beanManager) {
putBean(id, bean);
}
} else {
putBean(contextualStore, manager, bean);
if (manager.isBeanEnabled(bean)) {
// Make sure the bean is truly enabled
putBean(contextualStore, manager, bean);
}
}
}
for (Interceptor<?> interceptor : manager.getInterceptors()) {
Expand Down
17 changes: 16 additions & 1 deletion probe/core/src/main/java/org/jboss/weld/probe/Queries.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.ObserverMethod;

import org.jboss.weld.event.ObserverMethodImpl;
import org.jboss.weld.manager.BeanManagerImpl;
import org.jboss.weld.probe.Components.BeanKind;

Expand Down Expand Up @@ -267,20 +268,34 @@ static class ObserverFilters extends Filters<ObserverMethod<?>> {

private TransactionPhase txPhase;

private BeanKind declaringBeanKind;

ObserverFilters(Probe probe) {
super(probe);
}

@Override
boolean test(ObserverMethod<?> observer) {
if (declaringBeanKind != null) {
if (observer instanceof ObserverMethodImpl) {
ObserverMethodImpl<?, ?> observerMethodImpl = (ObserverMethodImpl<?, ?>) observer;
if (!declaringBeanKind.equals(BeanKind.from(observerMethodImpl.getDeclaringBean()))) {
return false;
}
} else {
return false;
}
}
return testEquals(reception, observer.getReception()) && testEquals(txPhase, observer.getTransactionPhase())
&& testContainsIgnoreCase(beanClass, observer.getBeanClass()) && testContainsIgnoreCase(observedType, observer.getObservedType())
&& testAnyContains(qualifier, observer.getObservedQualifiers());
}

@Override
void processFilter(String name, String value) {
if (BEAN_CLASS.equals(name)) {
if (KIND.equals(name)) {
declaringBeanKind = BeanKind.from(value);
} else if (BEAN_CLASS.equals(name)) {
beanClass = value;
} else if (OBSERVED_TYPE.equals(name)) {
observedType = value;
Expand Down

0 comments on commit f9916d3

Please sign in to comment.