Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/ejb/internal/impl/ContainerManagedEntityFilter.java')
-rw-r--r--plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/ejb/internal/impl/ContainerManagedEntityFilter.java200
1 files changed, 0 insertions, 200 deletions
diff --git a/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/ejb/internal/impl/ContainerManagedEntityFilter.java b/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/ejb/internal/impl/ContainerManagedEntityFilter.java
deleted file mode 100644
index 2a7d79923..000000000
--- a/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/ejb/internal/impl/ContainerManagedEntityFilter.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.j2ee.ejb.internal.impl;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jst.j2ee.ejb.CMPAttribute;
-import org.eclipse.jst.j2ee.ejb.ContainerManagedEntity;
-import org.eclipse.jst.j2ee.ejb.EJBExtensionFilter;
-import org.eclipse.jst.j2ee.ejb.EnterpriseBean;
-import org.eclipse.jst.j2ee.ejb.Entity;
-import org.eclipse.jst.j2ee.internal.EjbModuleExtensionHelper;
-import org.eclipse.jst.j2ee.internal.IEJBModelExtenderManager;
-import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
-
-public abstract class ContainerManagedEntityFilter implements EJBExtensionFilter {
-
- private static ThreadLocal<CMPCache> _cache = new ThreadLocal<CMPCache>();
-
- public List filter(ContainerManagedEntity cmp){
- List list = getCache(this, cmp);
- if (list != null)return list;
-
- list = filterNotcached(cmp);
- setCache(this, cmp, list);
- return list;
- }
-
- /**
- * Subclasses that don't implement the filter method need to override this method
- * to provided the filtered results.
- */
- protected List filterNotcached(ContainerManagedEntity cmp){
- return new ArrayList();
- }
-
- /**
- * All CMPAttributeFilters only operate on ContainerManagedEntityExtension
- * objects.
- */
- public List filter(EnterpriseBean ejb) {
- if (ejb.isEntity() && ((Entity) ejb).isContainerManagedEntity()) return filter((ContainerManagedEntity) ejb);
- return new ArrayList();
- }
-
- protected void filterRoleAttributesByName(List allAttributes, List roleAttributes) {
- if (!roleAttributes.isEmpty()) {
- int allSize, roleSize;
- roleSize = roleAttributes.size();
- CMPAttribute roleAtt, allAtt;
- for (int i = 0; i < roleSize; i++) {
- roleAtt = (CMPAttribute) roleAttributes.get(i);
- allSize = allAttributes.size();
- for (int j = allSize - 1; j != -1; j--) {
- allAtt = (CMPAttribute) allAttributes.get(j);
- if (roleAtt == allAtt || roleAtt.getName().equals(allAtt.getName())) {
- allAttributes.remove(j);
- break;
- }
- }
- }
- }
- }
-
- protected EjbModuleExtensionHelper getEjbModuleExtHelper(Object context) {
- return IEJBModelExtenderManager.INSTANCE.getEJBModuleExtension(context);
- }
-
- protected List getLocalRelationshipRoles(ContainerManagedEntity cmp) {
- EjbModuleExtensionHelper modelExtender = null;
- if (cmp.getVersionID() >= J2EEVersionConstants.EJB_2_0_ID)
- return cmp.getRoles();
- else if ( (modelExtender = getEjbModuleExtHelper(cmp)) != null ){
- return modelExtender.getLocalRelationshipRoles_cmp11(cmp);
- }
- return Collections.EMPTY_LIST;
- }
-
- protected List getRelationshipRoles(ContainerManagedEntity cmp) {
- List roles = new ArrayList();
- collectRelationshipRoles(cmp, getEjbModuleExtHelper(cmp), roles);
- return Collections.unmodifiableList(roles);
- }
-
- public void collectRelationshipRoles(ContainerManagedEntity cmp, EjbModuleExtensionHelper extensionHelper, List containerList) {
- if(cmp == null)
- return;
- containerList.addAll(getLocalRelationshipRoles(cmp));
- if(extensionHelper != null)
- collectRelationshipRoles((ContainerManagedEntity) extensionHelper.getSuperType(cmp), extensionHelper, containerList);
- }
-
- /**
- * Clear the cache and turn off caching.
- */
- public void clearCache(){
- if (_cache == null)return;
- getCache().clear();
- getCache().setEnabled(false);
- }
-
-
- protected void setCache(ContainerManagedEntityFilter filter, ContainerManagedEntity cmp, List list) {
- getCache().set(filter, cmp, list);
- }
-
-
- protected List getCache(ContainerManagedEntityFilter filter, ContainerManagedEntity cmp) {
- return getCache().get(filter, cmp);
- }
-
- /**
- * Answer the CMPCache for this thread.
- * @return
- */
- private CMPCache getCache(){
- CMPCache cache = _cache.get();
- if (cache == null){
- cache = new CMPCache();
- _cache.set(cache);
- }
- return cache;
- }
-
- /**
- * This method needs to be called (with the parameter true) if you wish the
- * filter results to be cached. By default the results are not cached.
- * <p>
- * The cache is thread based. When done the clearCache method should be called.
- *
- * @param isEnabled set this to true to have the filter results cached.
- */
- public void enableCache(boolean isEnabled){
- getCache().setEnabled(isEnabled);
- }
-
- /**
- * Keep a thread local cache of filtered results.
- * @author karasiuk
- *
- */
- private static class CMPCache {
-
- /*
- * We discovered some very deep code paths when validating EJBs. In one example project that
- * only had a few beans, it took 12 hours to validate. Keeping a cache during validation
- * reduced the time to seconds.
- */
-
- private Map _map = new HashMap(30);
-
- /** Is the cache turned on, by default it is not. */
- private boolean _enabled;
-
- public void setEnabled(boolean isEnabled){
- _enabled = isEnabled;
- }
-
- public List get(ContainerManagedEntityFilter filter, ContainerManagedEntity cmp) {
- if (!_enabled)return null;
-
- Map map = (Map)_map.get(filter);
- if (map == null){
- map = new HashMap(100);
- _map.put(filter, map);
- }
- return (List)map.get(cmp);
- }
-
- public void set(ContainerManagedEntityFilter filter, ContainerManagedEntity cmp, List list) {
- if (!_enabled)return;
-
- Map map = (Map)_map.get(filter);
- if (map == null){
- map = new HashMap(100);
- _map.put(filter, map);
- }
-
- map.put(cmp, list);
- }
-
- public void clear(){
- _map.clear();
- }
-
- }
-
-}

Back to the top