use of org.qi4j.api.object.NoSuchObjectException in project qi4j-sdk by Qi4j.
the class ModuleInstance method newObject.
// Implementation of ObjectFactory
@Override
public <T> T newObject(Class<T> mixinType, Object... uses) throws NoSuchObjectException {
NullArgumentException.validateNotNull("mixinType", mixinType);
ModelModule<ObjectModel> modelModule = typeLookup.lookupObjectModel(mixinType);
if (modelModule == null) {
throw new NoSuchObjectException(mixinType.getName(), name());
}
InjectionContext injectionContext = new InjectionContext(modelModule.module(), UsesInstance.EMPTY_USES.use(uses));
return mixinType.cast(modelModule.model().newInstance(injectionContext));
}
use of org.qi4j.api.object.NoSuchObjectException in project qi4j-sdk by Qi4j.
the class ModuleInstance method injectTo.
@Override
public void injectTo(Object instance, Object... uses) throws ConstructionException {
NullArgumentException.validateNotNull("instance", instance);
ModelModule<ObjectModel> modelModule = typeLookup.lookupObjectModel(instance.getClass());
if (modelModule == null) {
throw new NoSuchObjectException(instance.getClass().getName(), name());
}
InjectionContext injectionContext = new InjectionContext(modelModule.module(), UsesInstance.EMPTY_USES.use(uses));
modelModule.model().inject(injectionContext, instance);
}
use of org.qi4j.api.object.NoSuchObjectException in project qi4j-sdk by Qi4j.
the class InteractionConstraintsService method findConstraints.
private InteractionConstraintsBinding findConstraints(Class aClass, Module module) {
List<Binding> classConstraintBindings = new ArrayList<Binding>();
for (Annotation annotation : aClass.getAnnotations()) {
if (annotation.annotationType().getAnnotation(ConstraintDeclaration.class) != null) {
Constraints constraints = annotation.annotationType().getAnnotation(Constraints.class);
for (Class<? extends Constraint<?, ?>> constraintClass : constraints.value()) {
try {
Constraint<Annotation, Object> constraint = (Constraint<Annotation, Object>) constraintClass.newInstance();
Class roleClass = (Class) ((ParameterizedType) constraint.getClass().getGenericInterfaces()[0]).getActualTypeArguments()[1];
ConstraintBinding constraintBinding = new ConstraintBinding(constraint, annotation, roleClass);
classConstraintBindings.add(constraintBinding);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
} else if (annotation.annotationType().getAnnotation(InteractionConstraintDeclaration.class) != null) {
Class<? extends InteractionConstraint> constraintClass = annotation.annotationType().getAnnotation(InteractionConstraintDeclaration.class).value();
InteractionConstraint<Annotation> constraint = null;
try {
try {
constraint = module.newObject(constraintClass);
} catch (NoSuchObjectException e) {
constraint = constraintClass.newInstance();
}
} catch (Exception e) {
// Skip this constraint
continue;
}
InteractionConstraintBinding constraintBinding = new InteractionConstraintBinding(constraint, annotation);
classConstraintBindings.add(constraintBinding);
}
}
if (classConstraintBindings.isEmpty()) {
classConstraintBindings = null;
}
return new InteractionConstraintsBinding(classConstraintBindings);
}
use of org.qi4j.api.object.NoSuchObjectException in project qi4j-sdk by Qi4j.
the class InteractionConstraintsService method findConstraints.
private InteractionConstraintsBinding findConstraints(Method method, Module module) {
List<Binding> methodConstraintBindings = new ArrayList<Binding>();
for (Annotation annotation : method.getAnnotations()) {
if (annotation.annotationType().equals(RequiresValid.class)) {
RequiresValid requiresValid = (RequiresValid) annotation;
Class contextClass = method.getDeclaringClass();
if (InteractionValidation.class.isAssignableFrom(contextClass)) {
InteractionValidation validation = null;
if (TransientComposite.class.isAssignableFrom(contextClass)) {
validation = (InteractionValidation) module.newTransient(contextClass);
} else {
validation = (InteractionValidation) module.newObject(contextClass);
}
methodConstraintBindings.add(new RequiresValidBinding(requiresValid, validation));
}
} else if (annotation.annotationType().getAnnotation(ConstraintDeclaration.class) != null) {
Constraints constraints = annotation.annotationType().getAnnotation(Constraints.class);
for (Class<? extends Constraint<?, ?>> aClass : constraints.value()) {
try {
Constraint<Annotation, Object> constraint = (Constraint<Annotation, Object>) aClass.newInstance();
Class roleClass = (Class) ((ParameterizedType) aClass.getGenericInterfaces()[0]).getActualTypeArguments()[1];
ConstraintBinding constraintBinding = new ConstraintBinding(constraint, annotation, roleClass);
methodConstraintBindings.add(constraintBinding);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
} else if (annotation.annotationType().getAnnotation(InteractionConstraintDeclaration.class) != null) {
Class<? extends InteractionConstraint> constraintClass = annotation.annotationType().getAnnotation(InteractionConstraintDeclaration.class).value();
InteractionConstraint<Annotation> constraint = null;
try {
try {
constraint = module.newObject(constraintClass);
} catch (NoSuchObjectException e) {
constraint = constraintClass.newInstance();
}
} catch (Exception e) {
// Skip this constraint
continue;
}
InteractionConstraintBinding constraintBinding = new InteractionConstraintBinding(constraint, annotation);
methodConstraintBindings.add(constraintBinding);
}
}
if (methodConstraintBindings.isEmpty()) {
methodConstraintBindings = null;
}
return new InteractionConstraintsBinding(methodConstraintBindings);
}
use of org.qi4j.api.object.NoSuchObjectException in project qi4j-sdk by Qi4j.
the class Qi4jObjectFactory method createQi4jObject.
@SuppressWarnings("unchecked")
private Object createQi4jObject(Class aClass, boolean isAddToTypes) {
if (objectFactory == null) {
return null;
}
ConstructionException exception = null;
Object obj = null;
try {
obj = objectFactory.newObject(aClass);
} catch (NoSuchObjectException e) {
return null;
} catch (ConstructionException e) {
exception = e;
}
if (isAddToTypes) {
addToType(aClass, qi4jObject);
}
if (exception != null) {
throw exception;
}
return obj;
}
Aggregations