KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > tomcat > interceptor > InstanceContextBeforeAfter


1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17 package org.apache.geronimo.tomcat.interceptor;
18
19 import java.util.Set JavaDoc;
20
21 import javax.resource.ResourceException JavaDoc;
22 import javax.servlet.ServletRequest JavaDoc;
23 import javax.servlet.ServletResponse JavaDoc;
24
25 import org.apache.geronimo.connector.outbound.connectiontracking.TrackedConnectionAssociator;
26 import org.apache.geronimo.connector.outbound.connectiontracking.SharedConnectorInstanceContext;
27
28 public class InstanceContextBeforeAfter implements BeforeAfter{
29
30     private final BeforeAfter next;
31     private final int oldIndex;
32     private final int newIndex;
33     private final Set JavaDoc unshareableResources;
34     private final Set JavaDoc applicationManagedSecurityResources;
35     private final TrackedConnectionAssociator trackedConnectionAssociator;
36
37     public InstanceContextBeforeAfter(BeforeAfter next, int oldIndex, int newIndex, Set JavaDoc unshareableResources, Set JavaDoc applicationManagedSecurityResources, TrackedConnectionAssociator trackedConnectionAssociator) {
38         this.next = next;
39         this.oldIndex = oldIndex;
40         this.newIndex = newIndex;
41         this.unshareableResources = unshareableResources;
42         this.applicationManagedSecurityResources = applicationManagedSecurityResources;
43         this.trackedConnectionAssociator = trackedConnectionAssociator;
44     }
45
46     public void before(Object JavaDoc[] context, ServletRequest JavaDoc httpRequest, ServletResponse JavaDoc httpResponse) {
47         try {
48             SharedConnectorInstanceContext newConnectorInstanceContext = new SharedConnectorInstanceContext(unshareableResources, applicationManagedSecurityResources, false);
49             SharedConnectorInstanceContext oldContext = (SharedConnectorInstanceContext) trackedConnectionAssociator.enter(newConnectorInstanceContext);
50             if (oldContext != null) {
51                 newConnectorInstanceContext.share(oldContext);
52             }
53             context[oldIndex] = oldContext;
54             context[newIndex] = newConnectorInstanceContext;
55         } catch (ResourceException JavaDoc e) {
56             throw new RuntimeException JavaDoc(e);
57         }
58         if (next != null) {
59             next.before(context, httpRequest, httpResponse);
60         }
61     }
62
63     public void after(Object JavaDoc[] context, ServletRequest JavaDoc httpRequest, ServletResponse JavaDoc httpResponse) {
64         if (next != null) {
65             next.after(context, httpRequest, httpResponse);
66         }
67         try {
68             SharedConnectorInstanceContext oldConnectorInstanceContext = (SharedConnectorInstanceContext) context[oldIndex];
69             SharedConnectorInstanceContext newConnectorInstanceContext = (SharedConnectorInstanceContext) context[newIndex];
70             if (oldConnectorInstanceContext != null) {
71                 newConnectorInstanceContext.hide();
72             }
73             trackedConnectionAssociator.exit(oldConnectorInstanceContext);
74         } catch (ResourceException JavaDoc e) {
75             throw new RuntimeException JavaDoc(e);
76         }
77     }
78 }
79
Popular Tags