com.opensymphony.xwork2.config.impl.LocatableFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xwork Show documentation
Show all versions of xwork Show documentation
XWork is an command-pattern framework that is used to power WebWork
as well as other applications. XWork provides an Inversion of Control
container, a powerful expression language, data type conversion,
validation, and pluggable configuration.
package com.opensymphony.xwork2.config.impl;
import com.opensymphony.xwork2.util.location.Located;
import com.opensymphony.xwork2.util.location.LocationUtils;
import com.opensymphony.xwork2.inject.Factory;
import com.opensymphony.xwork2.inject.Scope;
import com.opensymphony.xwork2.inject.Context;
import java.util.LinkedHashMap;
/**
* Attaches location information to the factory.
*/
public class LocatableFactory extends Located implements Factory {
private Class implementation;
private Class type;
private String name;
private Scope scope;
public LocatableFactory(String name, Class type, Class implementation, Scope scope, Object location) {
this.implementation = implementation;
this.type = type;
this.name = name;
this.scope = scope;
setLocation(LocationUtils.getLocation(location));
}
@SuppressWarnings("unchecked")
public T create(Context context) {
Object obj = context.getContainer().inject(implementation);
return (T) obj;
}
public String toString() {
String fields = new LinkedHashMap() {
{
put("type", type);
put("name", name);
put("implementation", implementation);
put("scope", scope);
}
}.toString();
StringBuilder sb = new StringBuilder(fields);
sb.append(super.toString());
sb.append(" defined at ");
sb.append(getLocation().toString());
return sb.toString();
}
}