use of org.jboss.as.naming.ImmediateManagedReference in project wildfly by wildfly.
the class SFSBCreateInterceptor method processInvocation.
@Override
public Object processInvocation(InterceptorContext interceptorContext) throws Exception {
ComponentInstance componentInstance = interceptorContext.getPrivateData(ComponentInstance.class);
Map<String, ExtendedEntityManager> entityManagers = null;
if (componentInstance.getInstanceData(SFSBInvocationInterceptor.CONTEXT_KEY) == null) {
// Get all of the extended persistence contexts in use by the bean (some of which may of been inherited from
// other beans).
entityManagers = new HashMap<String, ExtendedEntityManager>();
componentInstance.setInstanceData(SFSBInvocationInterceptor.CONTEXT_KEY, new ImmediateManagedReference(entityManagers));
} else {
ManagedReference entityManagerRef = (ManagedReference) componentInstance.getInstanceData(SFSBInvocationInterceptor.CONTEXT_KEY);
entityManagers = (Map<String, ExtendedEntityManager>) entityManagerRef.getInstance();
}
final ExtendedEntityManager[] ems = CreatedEntityManagers.getDeferredEntityManagers();
for (ExtendedEntityManager e : ems) {
entityManagers.put(e.getScopedPuName(), e);
}
return interceptorContext.proceed();
}
use of org.jboss.as.naming.ImmediateManagedReference in project wildfly by wildfly.
the class LookupInjectionSource method getResourceValue.
/**
* {@inheritDoc}
*/
public void getResourceValue(final ResolutionContext resolutionContext, final ServiceBuilder<?> serviceBuilder, final DeploymentPhaseContext phaseContext, final Injector<ManagedReferenceFactory> injector) {
final String applicationName = resolutionContext.getApplicationName();
final String moduleName = resolutionContext.getModuleName();
final String componentName = resolutionContext.getComponentName();
final boolean compUsesModule = resolutionContext.isCompUsesModule();
final String scheme = org.jboss.as.naming.InitialContext.getURLScheme(lookupName);
if (scheme == null) {
// relative name, build absolute name and setup normal lookup injection
if (componentName != null && !compUsesModule) {
ContextNames.bindInfoFor(applicationName, moduleName, componentName, "java:comp/env/" + lookupName).setupLookupInjection(serviceBuilder, injector, phaseContext.getDeploymentUnit(), optional);
} else if (compUsesModule) {
ContextNames.bindInfoFor(applicationName, moduleName, componentName, "java:module/env/" + lookupName).setupLookupInjection(serviceBuilder, injector, phaseContext.getDeploymentUnit(), optional);
} else {
ContextNames.bindInfoFor(applicationName, moduleName, componentName, "java:jboss/env/" + lookupName).setupLookupInjection(serviceBuilder, injector, phaseContext.getDeploymentUnit(), optional);
}
} else {
if (scheme.equals("java")) {
// an absolute java name, setup normal lookup injection
if (compUsesModule && lookupName.startsWith("java:comp/")) {
// switch "comp" with "module"
ContextNames.bindInfoFor(applicationName, moduleName, componentName, "java:module/" + lookupName.substring(10)).setupLookupInjection(serviceBuilder, injector, phaseContext.getDeploymentUnit(), optional);
} else {
ContextNames.bindInfoFor(applicationName, moduleName, componentName, lookupName).setupLookupInjection(serviceBuilder, injector, phaseContext.getDeploymentUnit(), optional);
}
} else {
// an absolute non java name
final ManagedReferenceFactory managedReferenceFactory;
if (URL_SCHEMES.contains(scheme)) {
// a Java EE Standard Resource Manager Connection Factory for URLs, using lookup to define value of URL, inject factory that creates URL instances
managedReferenceFactory = new ManagedReferenceFactory() {
@Override
public ManagedReference getReference() {
try {
return new ImmediateManagedReference(new URL(lookupName));
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
}
};
} else {
// lookup for a non java jndi resource, inject factory which does a true jndi lookup
managedReferenceFactory = new ManagedReferenceFactory() {
@Override
public ManagedReference getReference() {
try {
return new ImmediateManagedReference(new InitialContext().lookup(lookupName));
} catch (NamingException e) {
EeLogger.ROOT_LOGGER.tracef(e, "failed to lookup %s", lookupName);
return null;
}
}
};
}
injector.inject(managedReferenceFactory);
}
}
}
use of org.jboss.as.naming.ImmediateManagedReference in project wildfly by wildfly.
the class BasicComponent method createInstance.
/**
* Wraps an existing object instance in a ComponentInstance, and run the post construct interceptor chain on it.
*
* @param instance The instance to wrap
* @return The new ComponentInstance
*/
public ComponentInstance createInstance(Object instance) {
BasicComponentInstance obj = constructComponentInstance(new ImmediateManagedReference(instance), true);
obj.constructionFinished();
return obj;
}
use of org.jboss.as.naming.ImmediateManagedReference in project wildfly by wildfly.
the class ResourceReferenceProcessor method getResourceRefEntries.
private List<BindingConfiguration> getResourceRefEntries(final DeploymentUnit deploymentUnit, DeploymentDescriptorEnvironment environment, ClassLoader classLoader, DeploymentReflectionIndex deploymentReflectionIndex, ResourceInjectionTarget resourceInjectionTarget) throws DeploymentUnitProcessingException {
List<BindingConfiguration> bindings = new ArrayList<BindingConfiguration>();
final EEResourceReferenceProcessorRegistry registry = deploymentUnit.getAttachment(Attachments.RESOURCE_REFERENCE_PROCESSOR_REGISTRY);
final ResourceReferencesMetaData resourceRefs = environment.getEnvironment().getResourceReferences();
if (resourceRefs == null) {
return bindings;
}
for (final ResourceReferenceMetaData resourceRef : resourceRefs) {
final String name;
if (resourceRef.getName().startsWith("java:")) {
name = resourceRef.getName();
} else {
name = environment.getDefaultContext() + resourceRef.getName();
}
Class<?> classType = null;
if (resourceRef.getType() != null) {
try {
classType = classLoader.loadClass(resourceRef.getType());
} catch (ClassNotFoundException e) {
throw EeLogger.ROOT_LOGGER.cannotLoad(e, resourceRef.getType());
}
}
// our injection (source) comes from the local (ENC) lookup, no matter what.
InjectionSource injectionSource = new LookupInjectionSource(name);
classType = processInjectionTargets(resourceInjectionTarget, injectionSource, classLoader, deploymentReflectionIndex, resourceRef, classType);
if (!isEmpty(resourceRef.getLookupName())) {
injectionSource = new LookupInjectionSource(resourceRef.getLookupName(), classType != null && JAVAX_NAMING_CONTEXT.equals(classType.getName()));
} else if (!isEmpty(resourceRef.getResUrl())) {
final String url = resourceRef.getResUrl();
if (classType != null && classType.equals(URI.class)) {
try {
//we need a newURI every time
injectionSource = new FixedInjectionSource(new ManagedReferenceFactory() {
@Override
public ManagedReference getReference() {
try {
return new ImmediateManagedReference(new URI(url));
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
}
}, new URI(url));
} catch (URISyntaxException e) {
throw EeLogger.ROOT_LOGGER.cannotParseResourceRefUri(e, resourceRef.getResUrl());
}
} else {
try {
injectionSource = new FixedInjectionSource(new ManagedReferenceFactory() {
@Override
public ManagedReference getReference() {
try {
return new ImmediateManagedReference(new URL(url));
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
}
}, new URL(url));
} catch (MalformedURLException e) {
throw EeLogger.ROOT_LOGGER.cannotParseResourceRefUri(e, resourceRef.getResUrl());
}
}
} else {
if (classType == null) {
throw EeLogger.ROOT_LOGGER.cannotDetermineType(name);
}
//check if it is a well known type
final String lookup = ResourceInjectionAnnotationParsingProcessor.FIXED_LOCATIONS.get(classType.getName());
if (lookup != null) {
injectionSource = new LookupInjectionSource(lookup);
} else {
final EEResourceReferenceProcessor resourceReferenceProcessor = registry.getResourceReferenceProcessor(classType.getName());
if (resourceReferenceProcessor != null) {
injectionSource = resourceReferenceProcessor.getResourceReferenceBindingSource();
} else if (!resourceRef.getResourceRefName().startsWith("java:")) {
injectionSource = new LookupInjectionSource("java:jboss/resources/" + resourceRef.getResourceRefName());
} else {
//if we cannot resolve it just log
ROOT_LOGGER.cannotResolve("resource-env-ref", name);
continue;
}
}
}
bindings.add(new BindingConfiguration(name, injectionSource));
}
return bindings;
}
use of org.jboss.as.naming.ImmediateManagedReference in project wildfly by wildfly.
the class NamingBindingAdd method installExternalContext.
void installExternalContext(final OperationContext context, final String name, final ModelNode model) throws OperationFailedException {
final String moduleID = NamingBindingResourceDefinition.MODULE.resolveModelAttribute(context, model).asString();
final String className = NamingBindingResourceDefinition.CLASS.resolveModelAttribute(context, model).asString();
final ModelNode cacheNode = NamingBindingResourceDefinition.CACHE.resolveModelAttribute(context, model);
boolean cache = cacheNode.isDefined() ? cacheNode.asBoolean() : false;
final ObjectFactory objectFactoryClassInstance = new ExternalContextObjectFactory();
final ServiceTarget serviceTarget = context.getServiceTarget();
final ContextNames.BindInfo bindInfo = ContextNames.bindInfoFor(name);
final Hashtable<String, String> environment = getObjectFactoryEnvironment(context, model);
environment.put(ExternalContextObjectFactory.CACHE_CONTEXT, Boolean.toString(cache));
environment.put(ExternalContextObjectFactory.INITIAL_CONTEXT_CLASS, className);
environment.put(ExternalContextObjectFactory.INITIAL_CONTEXT_MODULE, moduleID);
final ExternalContextBinderService binderService = new ExternalContextBinderService(name, objectFactoryClassInstance);
binderService.getManagedObjectInjector().inject(new ContextListAndJndiViewManagedReferenceFactory() {
@Override
public ManagedReference getReference() {
try {
final Object value = objectFactoryClassInstance.getObjectInstance(name, null, null, environment);
return new ImmediateManagedReference(value);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public String getInstanceClassName() {
return className;
}
@Override
public String getJndiViewInstanceValue() {
final ClassLoader cl = WildFlySecurityManager.getCurrentContextClassLoaderPrivileged();
try {
WildFlySecurityManager.setCurrentContextClassLoaderPrivileged(objectFactoryClassInstance.getClass().getClassLoader());
return String.valueOf(getReference().getInstance());
} finally {
WildFlySecurityManager.setCurrentContextClassLoaderPrivileged(cl);
}
}
});
serviceTarget.addService(bindInfo.getBinderServiceName(), binderService).addDependency(bindInfo.getParentContextServiceName(), ServiceBasedNamingStore.class, binderService.getNamingStoreInjector()).addDependency(ExternalContextsService.SERVICE_NAME, ExternalContexts.class, binderService.getExternalContextsInjector()).install();
}
Aggregations