Skip to content

Commit

Permalink
AS7-1373 testcase
Browse files Browse the repository at this point in the history
  • Loading branch information
jharting authored and stuartwdouglas committed Jul 26, 2011
1 parent 30d8b7c commit 513d201
Show file tree
Hide file tree
Showing 4 changed files with 211 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2010, Red Hat Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.as.testsuite.integration.weldejb.injectionTarget;

import javax.ejb.Singleton;

@Singleton
public class Bus {

private boolean initialized = false;

public boolean isInitialized() {
return initialized;
}

public void setInitialized(boolean initialized) {
this.initialized = initialized;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2010, Red Hat Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.as.testsuite.integration.weldejb.injectionTarget;

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

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;

/**
* AS7-1373
*
* Tests that EJB's InjectionTarget can be wrapped.
*
* @author Jozef Hartinger
*/
@RunWith(Arquillian.class)
public class EjbInjectionTargetWrapTestCase {
@Deployment
public static JavaArchive getDeployment() {
JavaArchive jar = ShrinkWrap.create(JavaArchive.class);
jar.addPackage(EjbInjectionTargetWrapTestCase.class.getPackage());
jar.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
jar.addAsServiceProvider(Extension.class, WrappingExtension.class);
return jar;
}

@Inject
private Bus bus;

@Test
public void testEjbInjectionTargetWasWrapped() {
Assert.assertTrue(bus.isInitialized());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2010, Red Hat Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.as.testsuite.integration.weldejb.injectionTarget;

import java.util.Set;

import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.inject.spi.InjectionTarget;

public abstract class ForwardingInjectionTarget<T> implements InjectionTarget<T> {

public abstract InjectionTarget<T> getDelegate();

@Override
public T produce(CreationalContext<T> ctx) {
return getDelegate().produce(ctx);
}

@Override
public void dispose(T instance) {
getDelegate().dispose(instance);
}

@Override
public Set<InjectionPoint> getInjectionPoints() {
return getDelegate().getInjectionPoints();
}

@Override
public void inject(T instance, CreationalContext<T> ctx) {
getDelegate().inject(instance, ctx);
}

@Override
public void postConstruct(T instance) {
getDelegate().postConstruct(instance);
}

@Override
public void preDestroy(T instance) {
getDelegate().preDestroy(instance);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2010, Red Hat Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.as.testsuite.integration.weldejb.injectionTarget;

import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.InjectionTarget;
import javax.enterprise.inject.spi.ProcessInjectionTarget;

public class WrappingExtension implements Extension {

public void wrapInjectionTarget(@Observes ProcessInjectionTarget<Bus> event)
{
final InjectionTarget<Bus> injectionTarget = event.getInjectionTarget();
event.setInjectionTarget(new ForwardingInjectionTarget<Bus>() {

@Override
public void inject(Bus instance, CreationalContext<Bus> ctx) {
super.inject(instance, ctx);
instance.setInitialized(true);
}

@Override
public InjectionTarget<Bus> getDelegate() {
return injectionTarget;
}
});
}
}

0 comments on commit 513d201

Please sign in to comment.