Lines 26-31
Link Here
|
26 |
import java.util.HashSet; |
26 |
import java.util.HashSet; |
27 |
import java.util.Stack; |
27 |
import java.util.Stack; |
28 |
import java.util.concurrent.atomic.AtomicInteger; |
28 |
import java.util.concurrent.atomic.AtomicInteger; |
|
|
29 |
import java.util.concurrent.locks.ReentrantReadWriteLock; |
29 |
|
30 |
|
30 |
import javax.management.ListenerNotFoundException; |
31 |
import javax.management.ListenerNotFoundException; |
31 |
import javax.management.MBeanNotificationInfo; |
32 |
import javax.management.MBeanNotificationInfo; |
Lines 293-298
Link Here
|
293 |
ServletRequest.class, |
294 |
ServletRequest.class, |
294 |
ServletResponse.class}; |
295 |
ServletResponse.class}; |
295 |
|
296 |
|
|
|
297 |
private final ReentrantReadWriteLock parametersLock = new ReentrantReadWriteLock(); |
298 |
private final ReentrantReadWriteLock mappingsLock = new ReentrantReadWriteLock(); |
299 |
private final ReentrantReadWriteLock referencesLock = new ReentrantReadWriteLock(); |
296 |
|
300 |
|
297 |
// ------------------------------------------------------------- Properties |
301 |
// ------------------------------------------------------------- Properties |
298 |
|
302 |
|
Lines 731-738
Link Here
|
731 |
@Override |
735 |
@Override |
732 |
public void addInitParameter(String name, String value) { |
736 |
public void addInitParameter(String name, String value) { |
733 |
|
737 |
|
734 |
synchronized (parameters) { |
738 |
try { |
|
|
739 |
parametersLock.writeLock().lock(); |
735 |
parameters.put(name, value); |
740 |
parameters.put(name, value); |
|
|
741 |
} finally { |
742 |
parametersLock.writeLock().unlock(); |
736 |
} |
743 |
} |
737 |
fireContainerEvent("addInitParameter", name); |
744 |
fireContainerEvent("addInitParameter", name); |
738 |
|
745 |
|
Lines 760-767
Link Here
|
760 |
@Override |
767 |
@Override |
761 |
public void addMapping(String mapping) { |
768 |
public void addMapping(String mapping) { |
762 |
|
769 |
|
763 |
synchronized (mappings) { |
770 |
try { |
|
|
771 |
mappingsLock.writeLock().lock(); |
764 |
mappings.add(mapping); |
772 |
mappings.add(mapping); |
|
|
773 |
} finally { |
774 |
mappingsLock.writeLock().unlock(); |
765 |
} |
775 |
} |
766 |
if(parent.getState().equals(LifecycleState.STARTED)) |
776 |
if(parent.getState().equals(LifecycleState.STARTED)) |
767 |
fireContainerEvent(ADD_MAPPING_EVENT, mapping); |
777 |
fireContainerEvent(ADD_MAPPING_EVENT, mapping); |
Lines 779-786
Link Here
|
779 |
@Override |
789 |
@Override |
780 |
public void addSecurityReference(String name, String link) { |
790 |
public void addSecurityReference(String name, String link) { |
781 |
|
791 |
|
782 |
synchronized (references) { |
792 |
try { |
|
|
793 |
referencesLock.writeLock().lock(); |
783 |
references.put(name, link); |
794 |
references.put(name, link); |
|
|
795 |
} finally { |
796 |
referencesLock.writeLock().unlock(); |
784 |
} |
797 |
} |
785 |
fireContainerEvent("addSecurityReference", name); |
798 |
fireContainerEvent("addSecurityReference", name); |
786 |
|
799 |
|
Lines 935-942
Link Here
|
935 |
@Override |
948 |
@Override |
936 |
public String findInitParameter(String name) { |
949 |
public String findInitParameter(String name) { |
937 |
|
950 |
|
938 |
synchronized (parameters) { |
951 |
try { |
|
|
952 |
parametersLock.readLock().lock(); |
939 |
return parameters.get(name); |
953 |
return parameters.get(name); |
|
|
954 |
} finally { |
955 |
parametersLock.readLock().unlock(); |
940 |
} |
956 |
} |
941 |
|
957 |
|
942 |
} |
958 |
} |
Lines 949-957
Link Here
|
949 |
@Override |
965 |
@Override |
950 |
public String[] findInitParameters() { |
966 |
public String[] findInitParameters() { |
951 |
|
967 |
|
952 |
synchronized (parameters) { |
968 |
try { |
|
|
969 |
parametersLock.readLock().lock(); |
953 |
String results[] = new String[parameters.size()]; |
970 |
String results[] = new String[parameters.size()]; |
954 |
return parameters.keySet().toArray(results); |
971 |
return parameters.keySet().toArray(results); |
|
|
972 |
} finally { |
973 |
parametersLock.readLock().unlock(); |
955 |
} |
974 |
} |
956 |
|
975 |
|
957 |
} |
976 |
} |
Lines 963-970
Link Here
|
963 |
@Override |
982 |
@Override |
964 |
public String[] findMappings() { |
983 |
public String[] findMappings() { |
965 |
|
984 |
|
966 |
synchronized (mappings) { |
985 |
try { |
|
|
986 |
mappingsLock.readLock().lock(); |
967 |
return mappings.toArray(new String[mappings.size()]); |
987 |
return mappings.toArray(new String[mappings.size()]); |
|
|
988 |
} finally { |
989 |
mappingsLock.readLock().unlock(); |
968 |
} |
990 |
} |
969 |
|
991 |
|
970 |
} |
992 |
} |
Lines 979-986
Link Here
|
979 |
@Override |
1001 |
@Override |
980 |
public String findSecurityReference(String name) { |
1002 |
public String findSecurityReference(String name) { |
981 |
|
1003 |
|
982 |
synchronized (references) { |
1004 |
try { |
|
|
1005 |
referencesLock.readLock().lock(); |
983 |
return references.get(name); |
1006 |
return references.get(name); |
|
|
1007 |
} finally { |
1008 |
referencesLock.readLock().unlock(); |
984 |
} |
1009 |
} |
985 |
|
1010 |
|
986 |
} |
1011 |
} |
Lines 993-1001
Link Here
|
993 |
@Override |
1018 |
@Override |
994 |
public String[] findSecurityReferences() { |
1019 |
public String[] findSecurityReferences() { |
995 |
|
1020 |
|
996 |
synchronized (references) { |
1021 |
try { |
|
|
1022 |
referencesLock.readLock().lock(); |
997 |
String results[] = new String[references.size()]; |
1023 |
String results[] = new String[references.size()]; |
998 |
return references.keySet().toArray(results); |
1024 |
return references.keySet().toArray(results); |
|
|
1025 |
} finally { |
1026 |
referencesLock.readLock().unlock(); |
999 |
} |
1027 |
} |
1000 |
|
1028 |
|
1001 |
} |
1029 |
} |
Lines 1251-1258
Link Here
|
1251 |
@Override |
1279 |
@Override |
1252 |
public void removeInitParameter(String name) { |
1280 |
public void removeInitParameter(String name) { |
1253 |
|
1281 |
|
1254 |
synchronized (parameters) { |
1282 |
try { |
|
|
1283 |
parametersLock.writeLock().lock(); |
1255 |
parameters.remove(name); |
1284 |
parameters.remove(name); |
|
|
1285 |
} finally { |
1286 |
parametersLock.writeLock().unlock(); |
1256 |
} |
1287 |
} |
1257 |
fireContainerEvent("removeInitParameter", name); |
1288 |
fireContainerEvent("removeInitParameter", name); |
1258 |
|
1289 |
|
Lines 1280-1287
Link Here
|
1280 |
@Override |
1311 |
@Override |
1281 |
public void removeMapping(String mapping) { |
1312 |
public void removeMapping(String mapping) { |
1282 |
|
1313 |
|
1283 |
synchronized (mappings) { |
1314 |
try { |
|
|
1315 |
mappingsLock.writeLock().lock(); |
1284 |
mappings.remove(mapping); |
1316 |
mappings.remove(mapping); |
|
|
1317 |
} finally { |
1318 |
mappingsLock.writeLock().unlock(); |
1285 |
} |
1319 |
} |
1286 |
if(parent.getState().equals(LifecycleState.STARTED)) |
1320 |
if(parent.getState().equals(LifecycleState.STARTED)) |
1287 |
fireContainerEvent(REMOVE_MAPPING_EVENT, mapping); |
1321 |
fireContainerEvent(REMOVE_MAPPING_EVENT, mapping); |
Lines 1297-1304
Link Here
|
1297 |
@Override |
1331 |
@Override |
1298 |
public void removeSecurityReference(String name) { |
1332 |
public void removeSecurityReference(String name) { |
1299 |
|
1333 |
|
1300 |
synchronized (references) { |
1334 |
try { |
|
|
1335 |
referencesLock.writeLock().lock(); |
1301 |
references.remove(name); |
1336 |
references.remove(name); |
|
|
1337 |
} finally { |
1338 |
referencesLock.writeLock().unlock(); |
1302 |
} |
1339 |
} |
1303 |
fireContainerEvent("removeSecurityReference", name); |
1340 |
fireContainerEvent("removeSecurityReference", name); |
1304 |
|
1341 |
|
Lines 1508-1515
Link Here
|
1508 |
@Override |
1545 |
@Override |
1509 |
public Enumeration<String> getInitParameterNames() { |
1546 |
public Enumeration<String> getInitParameterNames() { |
1510 |
|
1547 |
|
1511 |
synchronized (parameters) { |
1548 |
try { |
|
|
1549 |
parametersLock.readLock().lock(); |
1512 |
return (new Enumerator<String>(parameters.keySet())); |
1550 |
return (new Enumerator<String>(parameters.keySet())); |
|
|
1551 |
} finally { |
1552 |
parametersLock.readLock().unlock(); |
1513 |
} |
1553 |
} |
1514 |
|
1554 |
|
1515 |
} |
1555 |
} |