blob: 3b8a838a1e5f8e5292504ed84a26a8f35d969cf3 [file] [log] [blame]
// ***************************************************************************************************************************
// * 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.juneau.rest.test;
import static org.apache.juneau.rest.annotation.HookEvent.*;
import static org.apache.juneau.http.HttpMethodName.*;
import java.util.*;
import javax.servlet.*;
import org.apache.juneau.rest.*;
import org.apache.juneau.rest.annotation.*;
/**
* Validates the behavior of the @RestHook(INIT/POST_INIT/POST_INIT_CHILD_FIRST) annotations.
*/
@RestResource(
path="/testRestHooksInit",
children={
RestHooksInitResource.Super.class,
RestHooksInitResource.Sub.class
}
)
public class RestHooksInitResource extends BasicRestServlet {
private static final long serialVersionUID = 1L;
@RestResource(
path="/super"
)
public static class Super extends BasicRestServlet {
private static final long serialVersionUID = 1L;
protected List<String> init = new ArrayList<String>();
protected List<String> postInit = new ArrayList<String>();
protected List<String> postInitChildFirst = new ArrayList<String>();
@RestHook(INIT)
public void init1c(RestContextBuilder builder) {
init.add("super-1c");
}
@RestHook(INIT)
public void init1a(ServletConfig config) {
init.add("super-1a");
}
@RestHook(INIT)
public void init1b() {
init.add("super-1b");
}
@RestHook(INIT)
public void init2a() {
init.add("super-2a");
}
@RestHook(POST_INIT)
public void postInit1c(RestContext context) {
postInit.add("super-1c");
}
@RestHook(POST_INIT)
public void postInit1a(RestContext context) {
postInit.add("super-1a");
}
@RestHook(POST_INIT)
public void postInit1b() {
postInit.add("super-1b");
}
@RestHook(POST_INIT)
public void postInit2a() {
postInit.add("super-2a");
}
@RestHook(POST_INIT_CHILD_FIRST)
public void postInitChildFirst1c(RestContext context) {
postInitChildFirst.add("super-1c");
}
@RestHook(POST_INIT_CHILD_FIRST)
public void postInitChildFirst1a(RestContext context) {
postInitChildFirst.add("super-1a");
}
@RestHook(POST_INIT_CHILD_FIRST)
public void postInitChildFirst1b() {
postInitChildFirst.add("super-1b");
}
@RestHook(POST_INIT_CHILD_FIRST)
public void postInitChildFirst2a() {
postInitChildFirst.add("super-2a");
}
@RestMethod(name=GET, path="/init")
public List<String> getInitEvents() {
return init;
}
@RestMethod(name=GET, path="/postInit")
public List<String> getPostInitEvents() {
return postInit;
}
@RestMethod(name=GET, path="/postInitChildFirst")
public List<String> getPostInitChildFirstEvents() {
return postInitChildFirst;
}
}
@RestResource(
path="/sub",
children={
Child.class
}
)
public static class Sub extends Super {
private static final long serialVersionUID = 1L;
protected static String postInitOrderTest;
protected static String postInitChildFirstOrderTest;
@Override
@RestHook(INIT)
public void init1c(RestContextBuilder builder) {
init.add("sub-1c");
}
@Override
@RestHook(INIT)
public void init1a(ServletConfig config) {
init.add("sub-1a");
}
@Override
@RestHook(INIT)
public void init1b() {
init.add("sub-1b");
}
@RestHook(INIT)
public void init2b() {
init.add("sub-2b");
}
@Override
@RestHook(POST_INIT)
public void postInit1c(RestContext context) {
postInit.add("sub-1c");
}
@Override
@RestHook(POST_INIT)
public void postInit1a(RestContext context) {
postInit.add("sub-1a");
}
@Override
@RestHook(POST_INIT)
public void postInit1b() {
postInit.add("sub-1b");
}
@RestHook(POST_INIT)
public void postInit2b() {
postInit.add("sub-2b");
}
@Override
@RestHook(POST_INIT_CHILD_FIRST)
public void postInitChildFirst1c(RestContext context) {
postInitChildFirst.add("sub-1c");
}
@Override
@RestHook(POST_INIT_CHILD_FIRST)
public void postInitChildFirst1a(RestContext context) {
postInitChildFirst.add("sub-1a");
}
@Override
@RestHook(POST_INIT_CHILD_FIRST)
public void postInitChildFirst1b() {
postInitChildFirst.add("sub-1b");
}
@RestHook(POST_INIT_CHILD_FIRST)
public void postInitChildFirst2b() {
postInitChildFirst.add("sub-2b");
}
@RestHook(POST_INIT)
public void postInitOrderTestSub() {
postInitOrderTest = "PARENT";
}
@RestHook(POST_INIT_CHILD_FIRST)
public void postInitChildFirstOrderTestSub() {
postInitChildFirstOrderTest = "PARENT";
}
@RestMethod(name=GET, path="/postInitOrder")
public String postInitOrderTest() {
return postInitOrderTest;
}
@RestMethod(name=GET, path="/postInitChildFirstOrder")
public String postInitChildFirstOrderTest() {
return postInitChildFirstOrderTest;
}
}
@RestResource(
path="/child"
)
public static class Child extends Super {
private static final long serialVersionUID = 1L;
@Override
@RestHook(INIT)
public void init1c(RestContextBuilder builder) {
init.add("child-1c");
}
@RestHook(INIT)
public void init2b() {
init.add("child-2b");
}
@Override
@RestHook(POST_INIT)
public void postInit1c(RestContext context) {
postInit.add("child-1c");
}
@RestHook(POST_INIT)
public void postInit2b() {
postInit.add("child-2b");
}
@Override
@RestHook(POST_INIT_CHILD_FIRST)
public void postInitChildFirst1c(RestContext context) {
postInitChildFirst.add("child-1c");
}
@RestHook(POST_INIT_CHILD_FIRST)
public void postInitChildFirst2b() {
postInitChildFirst.add("child-2b");
}
@RestHook(POST_INIT)
public void postInitOrderTestSub() {
Sub.postInitOrderTest = "CHILD";
}
@RestHook(POST_INIT_CHILD_FIRST)
public void postInitChildFirstOrderTestSub() {
Sub.postInitChildFirstOrderTest = "CHILD";
}
}
}