Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/LibraryClassBasedTagRecord.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/LibraryClassBasedTagRecord.java546
1 files changed, 0 insertions, 546 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/LibraryClassBasedTagRecord.java b/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/LibraryClassBasedTagRecord.java
deleted file mode 100644
index 107828ca2..000000000
--- a/jsf/plugins/org.eclipse.jst.jsf.facelet.core/src/org/eclipse/jst/jsf/facelet/core/internal/registry/taglib/LibraryClassBasedTagRecord.java
+++ /dev/null
@@ -1,546 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Oracle Corporation.
- * 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:
- * Cameron Bateman - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsf.facelet.core.internal.registry.taglib;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jem.internal.proxy.core.IBeanProxy;
-import org.eclipse.jem.internal.proxy.core.IBeanTypeProxy;
-import org.eclipse.jem.internal.proxy.core.IBooleanBeanProxy;
-import org.eclipse.jem.internal.proxy.core.IFieldProxy;
-import org.eclipse.jem.internal.proxy.core.IMethodProxy;
-import org.eclipse.jem.internal.proxy.core.IStringBeanProxy;
-import org.eclipse.jem.internal.proxy.core.ProxyFactoryRegistry;
-import org.eclipse.jem.internal.proxy.core.ThrowableProxy;
-import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
-import org.eclipse.jst.jsf.core.internal.jem.BeanProxyUtil;
-import org.eclipse.jst.jsf.core.internal.jem.BeanProxyUtil.BeanProxyWrapper;
-import org.eclipse.jst.jsf.core.internal.jem.BeanProxyUtil.ProxyException;
-import org.eclipse.jst.jsf.facelet.core.internal.FaceletCorePlugin;
-import org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.faceletTaglib.ComponentTagDefn;
-import org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.faceletTaglib.ConverterTagDefn;
-import org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.faceletTaglib.FaceletLibraryClassTagLib;
-import org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.faceletTaglib.FaceletTaglibFactory;
-import org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.faceletTaglib.TagDefn;
-import org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.faceletTaglib.ValidatorTagDefn;
-
-/**
- * @author cbateman
- *
- */
-/* package */class LibraryClassBasedTagRecord extends FaceletTagRecord
-{
- private static final String METHOD_NAME_GET_VALUE = "getValue"; //$NON-NLS-1$
- private static final String METHOD_NAME_GET_KEY = "getKey"; //$NON-NLS-1$
- private static final String METHOD_NAME_HAS_NEXT = "hasNext"; //$NON-NLS-1$
- private static final String METHOD_NAME_NEXT = "next"; //$NON-NLS-1$
- private static final String METHOD_NAME_ITERATOR = "iterator"; //$NON-NLS-1$
- private static final String METHOD_NAME_ENTRY_SET = "entrySet"; //$NON-NLS-1$
- private static final String PROPERTY_NAME_FACTORIES = "factories"; //$NON-NLS-1$
- private static final String QUALIFIED_CLASS_NAME__COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY = "com.sun.facelets.tag.AbstractTagLibrary"; //$NON-NLS-1$
- private static final String QUALIFIED_CLASS_NAME_JAVA_UTIL_MAP = "java.util.Map"; //$NON-NLS-1$
-
- private static final String COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_HANDLER_FACTORY = "com.sun.facelets.tag.AbstractTagLibrary$HandlerFactory"; //$NON-NLS-1$
- private static final String COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_USER_CONVERTER_HANDLER_FACTORY = "com.sun.facelets.tag.AbstractTagLibrary$UserConverterHandlerFactory"; //$NON-NLS-1$
- private static final String COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_CONVERTER_HANDLER_FACTORY = "com.sun.facelets.tag.AbstractTagLibrary$ConverterHandlerFactory"; //$NON-NLS-1$
- private static final String COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_USER_VALIDATOR_HANDLER_FACTORY = "com.sun.facelets.tag.AbstractTagLibrary$UserValidatorHandlerFactory"; //$NON-NLS-1$
- private static final String COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_VALIDATOR_HANDLER_FACTORY = "com.sun.facelets.tag.AbstractTagLibrary$ValidatorHandlerFactory"; //$NON-NLS-1$
- private static final String COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_USER_COMPONENT_HANDLER_FACTORY = "com.sun.facelets.tag.AbstractTagLibrary$UserComponentHandlerFactory"; //$NON-NLS-1$
- private static final String COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_COMPONENT_HANDLER_FACTORY = "com.sun.facelets.tag.AbstractTagLibrary$ComponentHandlerFactory"; //$NON-NLS-1$
-
- private static final String FIELD_NAME_CONVERTER_ID = "converterId"; //$NON-NLS-1$
- private static final String FIELD_NAME_VALIDATOR_ID = "validatorId"; //$NON-NLS-1$
- private static final String FIELD_NAME_RENDER_TYPE = "renderType"; //$NON-NLS-1$
- private static final String FIELD_NAME_COMPONENT_TYPE = "componentType"; //$NON-NLS-1$
-
- /**
- *
- */
- private static final long serialVersionUID = 4174629773250721041L;
- private static final String STATIC_MEMBER_NAMESPACE = "Namespace"; //$NON-NLS-1$
- private static final String METHOD_NAME_GET_NAMESPACE = "getNamespace"; //$NON-NLS-1$
-
- private final IProject _project;
- private final FaceletLibraryClassTagLib _model;
- private final ProxyFactoryRegistry _registry;
- private final AtomicBoolean _isInitialized = new AtomicBoolean(
- false);
-
- private String _uri;
- private BeanProxyWrapper _classTypeWrapper;
- private Map<String, TagDefn> _tags;
-
- /**
- * @param registry
- * @param model
- * @param project
- */
- public LibraryClassBasedTagRecord(final ProxyFactoryRegistry registry,
- final FaceletLibraryClassTagLib model, final IProject project)
- {
- _registry = registry;
- _model = model;
- _project = project;
- }
-
- public void initURI() throws CoreException
- {
- if (_isInitialized.get())
- {
- throw new CoreException(
- new Status(
- IStatus.ERROR,
- JSFCorePlugin.PLUGIN_ID,
- "Cannot initURI once the library is initialized for: " + _model.getLibraryClass())); //$NON-NLS-1$
- }
-
- final IBeanTypeProxy libFactoryTypeProxy = _registry
- .getBeanTypeProxyFactory().getBeanTypeProxy(
- _model.getLibraryClass());
-
- if (libFactoryTypeProxy == null)
- {
- throw new CoreException(new Status(IStatus.ERROR,
- JSFCorePlugin.PLUGIN_ID,
- "Couldn't find type proxy for " + _model.getLibraryClass())); //$NON-NLS-1$
- }
-
- // TODO: wrap in try per the Glassfish patch
- _classTypeWrapper = new BeanProxyWrapper(_project, libFactoryTypeProxy);
-
- try
- {
- _classTypeWrapper.init();
- }
- catch (final ProxyException e)
- {
- throw new CoreException(new Status(IStatus.ERROR,
- JSFCorePlugin.PLUGIN_ID,
- "Couldn't load class: " + _model.getLibraryClass(), e)); //$NON-NLS-1$
- }
-
- final String namespace = resolveNS(_classTypeWrapper);
- System.out.println(namespace);
-
- if (namespace == null)
- {
- throw new CoreException(new Status(IStatus.ERROR,
- JSFCorePlugin.PLUGIN_ID,
- "Couldn't load uri: " + _model.getLibraryClass())); //$NON-NLS-1$
-
- }
- _uri = namespace;
- }
-
- @Override
- public synchronized TagDefn getTag(final String name)
- {
- initializeIfNecessary();
- return _tags.get(name);
- }
-
- @Override
- public synchronized Collection<? extends TagDefn> getTags()
- {
- initializeIfNecessary();
- return Collections.unmodifiableCollection(_tags.values());
- }
-
- private void initializeIfNecessary()
- {
- if (_isInitialized.compareAndSet(false, true))
- {
- if (_tags == null)
- {
- _tags = resolveTags();
- }
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.FaceletTagRecord
- * #getURI()
- */
- @Override
- public String getURI()
- {
- return _uri;
- }
-
- private Map<String, TagDefn> resolveTags()
- {
- final Map<String, TagDefn> tags = new HashMap<String, TagDefn>();
-
- // if the tag factory is a child of AbstractTagFactory, then we
- // can try to get our hands on its private parts ...
- final IBeanTypeProxy mapTypeProxy = _registry.getBeanTypeProxyFactory()
- .getBeanTypeProxy(QUALIFIED_CLASS_NAME_JAVA_UTIL_MAP);
- final IBeanTypeProxy componentFactoryTypeProxy = _registry
- .getBeanTypeProxyFactory()
- .getBeanTypeProxy(
- QUALIFIED_CLASS_NAME__COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY);
-
- if (mapTypeProxy != null && componentFactoryTypeProxy != null)
- {
- final IFieldProxy fieldProxy = componentFactoryTypeProxy
- .getDeclaredFieldProxy(PROPERTY_NAME_FACTORIES);
-
- if (fieldProxy != null)
- {
- if (fieldProxy.getFieldType().isKindOf(mapTypeProxy))
- {
- IBeanProxy factories = null;
-
- try
- {
- // need to turn off security checking on the private
- // field
- fieldProxy.setAccessible(true);
- factories = fieldProxy.get(_classTypeWrapper
- .getInstance());
- }
- catch (final ThrowableProxy e)
- {
- FaceletCorePlugin.log(
- "Error getting factories from bean instance", //$NON-NLS-1$
- e);
- }
-
- if (factories != null)
- {
- final IMethodProxy entrySetMethod = fieldProxy
- .getFieldType().getMethodProxy(
- METHOD_NAME_ENTRY_SET);
- if (entrySetMethod != null)
- {
- try
- {
- entrySetMethod.setAccessible(true);
- final IBeanProxy entrySetProxy = entrySetMethod
- .invoke(factories);
-
- if (entrySetProxy != null)
- {
- final IMethodProxy iteratorMethod = entrySetProxy
- .getTypeProxy().getMethodProxy(
- METHOD_NAME_ITERATOR);
- iteratorMethod.setAccessible(true);
- final IBeanProxy iteratorProxy = iteratorMethod
- .invoke(entrySetProxy);
-
- if (iteratorProxy != null)
- {
- final IMethodProxy nextMethod = iteratorProxy
- .getTypeProxy().getMethodProxy(
- METHOD_NAME_NEXT);
- nextMethod.setAccessible(true);
- final IMethodProxy hasNextMethod = iteratorProxy
- .getTypeProxy().getMethodProxy(
- METHOD_NAME_HAS_NEXT);
- hasNextMethod.setAccessible(true);
-
- while (((IBooleanBeanProxy) hasNextMethod
- .invoke(iteratorProxy))
- .booleanValue())
- {
- final IBeanProxy entryProxy = nextMethod
- .invoke(iteratorProxy);
- final IMethodProxy getKeyProxy = entryProxy
- .getTypeProxy()
- .getMethodProxy(
- METHOD_NAME_GET_KEY);
- final IMethodProxy getValueProxy = entryProxy
- .getTypeProxy()
- .getMethodProxy(
- METHOD_NAME_GET_VALUE);
- if (getKeyProxy != null
- && getValueProxy != null)
- {
- getKeyProxy.setAccessible(true);
- final IBeanProxy key = getKeyProxy
- .invoke(entryProxy);
-
- if (key instanceof IStringBeanProxy)
- {
- final String name = ((IStringBeanProxy) key)
- .stringValue();
- getValueProxy
- .setAccessible(true);
- final IBeanProxy value = getValueProxy
- .invoke(entryProxy);
-
- if (value != null)
- {
- final TagDefn tagDefn = createTagDefn(
- name,
- value);
- if (tagDefn != null)
- {
- tags.put(name,
- tagDefn);
- }
- }
- }
- }
- }
- }
- }
- }
- catch (final ThrowableProxy e)
- {
- FaceletCorePlugin.log(
- "Error invoking entrySet", e); //$NON-NLS-1$
- }
- }
- }
-
- }
- }
- }
- return tags;
- }
-
- private TagDefn createTagDefn(final String name,
- final IBeanProxy handlerValueProxy)
- {
- final IBeanTypeProxy handlerTypeProxy = handlerValueProxy.getTypeProxy();
- final FaceletTaglibFactory TAGDEFN_FACTORY = FaceletTaglibFactory.eINSTANCE;
-
- final IBeanTypeProxy componentHandlerFactory = _registry
- .getBeanTypeProxyFactory()
- .getBeanTypeProxy(
- COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_COMPONENT_HANDLER_FACTORY);
- final IBeanTypeProxy userComponentHandlerFactory = _registry
- .getBeanTypeProxyFactory()
- .getBeanTypeProxy(
- COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_USER_COMPONENT_HANDLER_FACTORY);
- final IBeanTypeProxy validatorHandlerFactory = _registry
- .getBeanTypeProxyFactory()
- .getBeanTypeProxy(
- COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_VALIDATOR_HANDLER_FACTORY);
- final IBeanTypeProxy userValidatorHandlerFactory = _registry
- .getBeanTypeProxyFactory()
- .getBeanTypeProxy(
- COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_USER_VALIDATOR_HANDLER_FACTORY);
- final IBeanTypeProxy converterHandlerFactory = _registry
- .getBeanTypeProxyFactory()
- .getBeanTypeProxy(
- COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_CONVERTER_HANDLER_FACTORY);
- final IBeanTypeProxy userConverterHandlerFactory = _registry
- .getBeanTypeProxyFactory()
- .getBeanTypeProxy(
- COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_USER_CONVERTER_HANDLER_FACTORY);
- final IBeanTypeProxy handlerFactory = _registry
- .getBeanTypeProxyFactory()
- .getBeanTypeProxy(
- COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_HANDLER_FACTORY);
- final IBeanTypeProxy userTagFactory = _registry
- .getBeanTypeProxyFactory()
- .getBeanTypeProxy(
- COM_SUN_FACELETS_TAG_ABSTRACT_TAG_LIBRARY$_HANDLER_FACTORY);
-
- TagDefn tagDefn = null;
-
- if (handlerTypeProxy.isKindOf(componentHandlerFactory)
- || handlerTypeProxy.isKindOf(userComponentHandlerFactory))
- {
- final IFieldProxy componentTypeProxy = handlerTypeProxy
- .getDeclaredFieldProxy(FIELD_NAME_COMPONENT_TYPE);
- final IFieldProxy rendererTypeProxy = handlerTypeProxy
- .getDeclaredFieldProxy(FIELD_NAME_RENDER_TYPE);
- try
- {
- if (componentTypeProxy != null)
- {
- componentTypeProxy.setAccessible(true);
- rendererTypeProxy.setAccessible(true);
- final IBeanProxy componentType = componentTypeProxy
- .get(handlerValueProxy);
- // final IBeanProxy rendererType = rendererTypeProxy
- // .get(handlerValueProxy);
-
- // render type is optional, but must have component type
- if (componentType instanceof IStringBeanProxy)
- {
- final String componentTypeValue = getMeaningfulString(((IStringBeanProxy) componentType)
- .stringValue());
-
- if (componentTypeValue != null)
- {
- final ComponentTagDefn compTagDefn = TAGDEFN_FACTORY
- .createComponentTagDefn();
- compTagDefn.setComponentType(componentTypeValue);
- // if (rendererType instanceof IStringBeanProxy)
- // {
- // compTagDefn
- // .setRendererType(getMeaningfulString(((
- // IStringBeanProxy) rendererType)
- // .stringValue()));
- // }
- tagDefn = compTagDefn;
- }
- }
- }
- }
- catch (final ThrowableProxy e)
- {
- FaceletCorePlugin.log("Error get component info", e); //$NON-NLS-1$
- }
- }
- else if (handlerTypeProxy.isKindOf(validatorHandlerFactory)
- || handlerTypeProxy.isKindOf(userValidatorHandlerFactory))
- {
- final IFieldProxy validatorIdProxy = handlerTypeProxy
- .getDeclaredFieldProxy(FIELD_NAME_VALIDATOR_ID);
-
- try
- {
- if (validatorIdProxy != null)
- {
- validatorIdProxy.setAccessible(true);
- final IBeanProxy validatorId = validatorIdProxy
- .get(handlerValueProxy);
-
- final ValidatorTagDefn valTagDefn = TAGDEFN_FACTORY
- .createValidatorTagDefn();
- tagDefn = valTagDefn;
-
- if (validatorId instanceof IStringBeanProxy)
- {
- final String validatorIdValue = getMeaningfulString(((IStringBeanProxy) validatorId)
- .stringValue());
-
- if (validatorIdValue != null)
- {
- valTagDefn.setValidatorId(validatorIdValue);
- }
- }
- }
- }
- catch (final ThrowableProxy e)
- {
- FaceletCorePlugin.log("Error getting validator info", e); //$NON-NLS-1$
- }
- }
- else if (handlerTypeProxy.isKindOf(converterHandlerFactory)
- || handlerTypeProxy.isKindOf(userConverterHandlerFactory))
- {
- final IFieldProxy converterIdProxy = handlerTypeProxy
- .getDeclaredFieldProxy(FIELD_NAME_CONVERTER_ID);
-
- try
- {
- if (converterIdProxy != null)
- {
- converterIdProxy.setAccessible(true);
- final IBeanProxy converterId = converterIdProxy
- .get(handlerValueProxy);
-
- final ConverterTagDefn converterTagDefn = TAGDEFN_FACTORY
- .createConverterTagDefn();
- tagDefn = converterTagDefn;
-
- if (converterId instanceof IStringBeanProxy)
- {
- final String converterIdValue = getMeaningfulString(((IStringBeanProxy) converterId)
- .stringValue());
-
- if (converterIdValue != null)
- {
- converterTagDefn.setConverterId(converterIdValue);
- }
- }
- }
- }
- catch (final ThrowableProxy e)
- {
- FaceletCorePlugin.log("Error getting validator info", e); //$NON-NLS-1$
- }
- }
- else if (handlerTypeProxy.isKindOf(handlerFactory)
- || handlerTypeProxy.isKindOf(userTagFactory))
- {
- tagDefn = TAGDEFN_FACTORY.createHandlerTagDefn();
- }
-
- if (tagDefn != null)
- {
- tagDefn.setName(name);
- }
- return tagDefn;
- }
-
- private String getMeaningfulString(final String value)
- {
- if (value == null)
- {
- return null;
- }
-
- String retValue = value.trim();
-
- if ("".equals(retValue)) //$NON-NLS-1$
- {
- retValue = null;
- }
- return retValue;
- }
-
- private String resolveNS(final BeanProxyWrapper beanProxy)
- {
- IBeanProxy resultProxy = null;
- try
- {
- resultProxy = beanProxy.call(METHOD_NAME_GET_NAMESPACE);
-
- if (resultProxy instanceof IStringBeanProxy)
- {
- return ((IStringBeanProxy) resultProxy).stringValue();
- }
- }
- catch (final BeanProxyUtil.ProxyException e)
- {
- // fall through
- }
-
- return resolveNSAggressively(beanProxy);
- }
-
- private String resolveNSAggressively(final BeanProxyWrapper beanProxy)
- {
- try
- {
- return beanProxy.getStringFieldValue(STATIC_MEMBER_NAMESPACE);
- }
- catch (final ProxyException e)
- {
- // fall through
- }
- return null;
- }
-
- public synchronized int getNumTags()
- {
- initializeIfNecessary();
- return _tags.size();
- }
-}

Back to the top