Skip to content

Commit

Permalink
WELD-1019 test
Browse files Browse the repository at this point in the history
  • Loading branch information
luksa authored and jharting committed Mar 9, 2012
1 parent 923189a commit 564aa12
Show file tree
Hide file tree
Showing 7 changed files with 173 additions and 0 deletions.
@@ -0,0 +1,17 @@
package org.jboss.weld.tests.interceptors.weld1019;

import javax.inject.Named;
import java.io.Serializable;

/**
*
*/
@MyScope
public class HelloBean implements Serializable {
private static final long serialVersionUID = -3216074155876250969L;

@UpperCased
public String getMessage() {
return "Hello World";
}
}
@@ -0,0 +1,21 @@
package org.jboss.weld.tests.interceptors.weld1019;

import javax.enterprise.context.NormalScope;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
*
*/
@Inherited
@NormalScope(passivating = true)
@Target({TYPE, METHOD, FIELD})
@Retention(RUNTIME)
public @interface MyScope {
}
@@ -0,0 +1,34 @@
package org.jboss.weld.tests.interceptors.weld1019;

import org.jboss.weld.context.AbstractContext;
import org.jboss.weld.context.beanstore.BeanStore;
import org.jboss.weld.context.beanstore.HashMapBeanStore;

import javax.enterprise.context.spi.Contextual;
import javax.enterprise.context.spi.CreationalContext;
import java.lang.annotation.Annotation;

/**
*
*/
public class MyScopeContext extends AbstractContext {

private HashMapBeanStore beanStore = new HashMapBeanStore();

public MyScopeContext() {
super(false);
}

public Class<? extends Annotation> getScope() {
return MyScope.class;
}

@Override
protected BeanStore getBeanStore() {
return beanStore;
}

public boolean isActive() {
return true;
}
}
@@ -0,0 +1,21 @@
package org.jboss.weld.tests.interceptors.weld1019;

import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.AfterBeanDiscovery;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.BeforeBeanDiscovery;
import javax.enterprise.inject.spi.Extension;

/**
*
*/
public class MyScopeExtension implements Extension {

public void beforeBeanDiscovery(@Observes BeforeBeanDiscovery event, BeanManager manager) {
event.addScope(MyScope.class, true, true);
}

public void afterBeanDiscovery(@Observes AfterBeanDiscovery event, BeanManager manager) {
event.addContext(new MyScopeContext());
}
}
@@ -0,0 +1,18 @@
package org.jboss.weld.tests.interceptors.weld1019;

import javax.interceptor.InterceptorBinding;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
*
*/
@InterceptorBinding
@Target({METHOD, TYPE})
@Retention(RUNTIME)
public @interface UpperCased {
}
@@ -0,0 +1,25 @@
package org.jboss.weld.tests.interceptors.weld1019;

import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;
import java.io.Serializable;

/**
*
*/
@Interceptor
@UpperCased
public class UppercasingInterceptor implements Serializable {
private static final long serialVersionUID = 7685137612002720995L;

@AroundInvoke
public Object intercept(InvocationContext ctx) throws Exception {
Object value = ctx.proceed();
if (value instanceof String) {
return ((String) value).toUpperCase();
} else {
throw new RuntimeException("UppercasingInterceptor can only intercept methods that return String");
}
}
}
@@ -0,0 +1,37 @@
package org.jboss.weld.tests.interceptors.weld1019;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.BeanArchive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.junit.Test;
import org.junit.runner.RunWith;

import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.Extension;

import static org.junit.Assert.*;

/**
* @author <a href="mailto:marko.luksa@gmail.com">Marko Luksa</a>
*/
@RunWith(Arquillian.class)
public class Weld1019Test {

@Deployment
public static Archive<?> deploy() {
return ShrinkWrap
.create(BeanArchive.class)
.intercept(UppercasingInterceptor.class)
.addPackage(Weld1019Test.class.getPackage())
.addAsServiceProvider(Extension.class, MyScopeExtension.class);
}

@Test
public void testInterceptorInvoked(HelloBean helloBean, BeanManager beanManager) {
assertEquals("HELLO WORLD", helloBean.getMessage());
}


}

0 comments on commit 564aa12

Please sign in to comment.