/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.openejb.config.rules;
import junit.framework.TestCase;
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.NamedMethod;
import org.apache.openejb.jee.StatelessBean;
import javax.ejb.Timeout;
//@RunWith(ValidationRunner.class)
public class CheckInvalidTimeoutTest extends TestCase {
public void testNothing() {
}
@Keys({@Key(value = "timeout.badReturnType"), @Key("timeout.invalidArguments"), @Key("timeout.tooManyMethods"), @Key("timeout.missing.possibleTypo")})
public EjbJar _test() throws Exception {
System.setProperty("openejb.validation.output.level", "VERBOSE");
final EjbJar ejbJar = new EjbJar();
ejbJar.addEnterpriseBean(new StatelessBean(TestBean.class));
ejbJar.addEnterpriseBean(new StatelessBean(FooBean.class));
final StatelessBean barBean = new StatelessBean(BarBean.class);
barBean.setTimeoutMethod(new NamedMethod("foo", "java.lang.String"));
ejbJar.addEnterpriseBean(barBean);
return ejbJar;
}
// A case where the class has the method with wrong signature annotated with @Timeout
// timeout.badReturnType
// timeout.invalidArguments
public static class TestBean {
@Timeout
public Object bar(final Object m) {
return null;
}
}
// A case where the class has more than one method annotated with @Timeout
// timeout.tooManyMethods
public static class FooBean {
@Timeout
public void foo(final javax.ejb.Timer timer) {
}
@Timeout
public void bar(final javax.ejb.Timer timer) {
}
}
// A case where incorrect timeout method is configured in the deployment descriptor
// timeout.missing.possibleTypo
public static class BarBean {
public void foo(final javax.ejb.Timer timer) {
}
}
}