/*
* JBoss, Home of Professional Open Source Copyright 2014, Red Hat, Inc. and/or
* its affiliates, and individual contributors by the @authors tag. See the
* copyright.txt in the distribution for a full listing of individual
* contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
* applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
* OF ANY KIND, either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*/
package org.jboss.weld.environment.se.test.beandiscovery.priority;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import javax.enterprise.inject.Instance;
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.jboss.shrinkwrap.api.spec.JavaArchive;
import org.jboss.weld.environment.se.test.arquillian.WeldSEClassPath;
import org.jboss.weld.environment.se.test.isolation.ArchiveIsolationOverrideTestBase;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* Verifies that @Priority annotation works for decorators, interceptors and
* alternatives in archive isolation mode.
*/
@RunWith(Arquillian.class)
public class PriorityTest extends ArchiveIsolationOverrideTestBase {
@Override
public boolean isArchiveIsolationEnabled() {
return true;
}
@Deployment(managed = false)
public static Archive<?> getDeployment() {
WeldSEClassPath archives = ShrinkWrap.create(WeldSEClassPath.class);
JavaArchive archive01 = ShrinkWrap.create(BeanArchive.class)
.addClasses(WhiteNoiseGenerator.class, SoundSource.class, Normalized.class);
JavaArchive archive02 = ShrinkWrap.create(BeanArchive.class).annotated()
.addClasses(EqualizingDecorator.class, NormalizingInterceptor.class, SineWaveGenerator.class);
archives.add(archive01);
archives.add(archive02);
return archives;
}
@Test
public void test(Instance<SoundSource> srcInstance) {
NormalizingInterceptor.reset();
EqualizingDecorator.reset();
assertFalse(srcInstance.isAmbiguous());
assertFalse(srcInstance.isUnsatisfied());
SineWaveGenerator source = srcInstance.select(SineWaveGenerator.class).get();
source.generateSound();
assertEquals(1, NormalizingInterceptor.invocations);
assertEquals(1, EqualizingDecorator.invocations);
}
}