Files
alfresco-community-repo/source/java/org/alfresco/traitextender/SpringExtensionPoint.java
Raluca Munteanu 8674e2bfc8 Merged 5.1.N (5.1.2) to 5.2.N (5.2.1)
125603 rmunteanu: Merged 5.1.1 (5.1.1) to 5.1.N (5.1.2)
      125484 slanglois: MNT-16155 Update source headers - remove old Copyrights from Java and JSP dource files


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@125781 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2016-04-26 12:48:49 +00:00

70 lines
2.0 KiB
Java

package org.alfresco.traitextender;
/**
* An {@link ExtensionPoint} spring bean wrapper with spring registering
* life-cycle management.<br>
* Works in conjunction with {@link SpringBeanExtension}s and
* {@link SpringExtensionBundle}s to define spring based {@link ExtensionBundle}
* s of singleton extensions.
*
* @author Bogdan Horje
*/
public class SpringExtensionPoint
{
private String trait;
private String extension;
public void setTrait(String trait)
{
this.trait = trait;
}
public void setExtension(String extension)
{
this.extension = extension;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public void register(RegistryExtensionBundle bundle, SpringBeanExtension<?, ?> extensionBean)
throws InvalidExtension
{
try
{
Class<?> extensionAPI = Class.forName(extension);
Class<? extends Trait> traitAPI = (Class<? extends Trait>) Class.forName(trait);
// perform RTTIs in order to avoid later cast exceptions
if (!Trait.class.isAssignableFrom(traitAPI))
{
throw new InvalidExtension("Non " + Trait.class + " spring extension point : " + traitAPI);
}
if (!extensionBean.acceptsTraitClass(traitAPI))
{
throw new InvalidExtension("Unsupported trait class : " + traitAPI + " in extension point targeting "
+ extensionBean);
}
bundle.register(new ExtensionPoint(extensionAPI,
traitAPI),
new SingletonExtensionFactory(extensionBean,
extensionAPI));
}
catch (InvalidExtension error)
{
throw error;
}
catch (ClassNotFoundException error)
{
throw new InvalidExtension("Extension point definition class not found.",
error);
}
}
}