|
PicoContainer example source code file (ConstantParameter.java)
The PicoContainer ConstantParameter.java source code/***************************************************************************** * Copyright (c) PicoContainer Organization. All rights reserved. * * ------------------------------------------------------------------------- * * The software in this package is published under the terms of the BSD * * style license a copy of which has been included with this distribution in * * the LICENSE.txt file. * * * * Idea by Rachel Davies, Original code by Jon Tirsen * *****************************************************************************/ package org.picocontainer.parameters; import org.picocontainer.ComponentAdapter; import org.picocontainer.Parameter; import org.picocontainer.PicoContainer; import org.picocontainer.PicoException; import org.picocontainer.PicoCompositionException; import org.picocontainer.PicoVisitor; import org.picocontainer.ParameterName; import java.io.Serializable; import java.lang.reflect.Field; /** * A ConstantParameter should be used to pass in "constant" arguments to constructors. This * includes {@link String}s,{@link Integer}s or any other object that is not registered in * the container. * * @author Jon Tirsén * @author Aslak Hellesøy * @author Jörg Schaible * @author Thomas Heller * @version $Revision: 3516 $ */ public class ConstantParameter implements Parameter, Serializable { private final Object value; public ConstantParameter(Object value) { this.value = value; } public Object resolveInstance(PicoContainer container, ComponentAdapter adapter, Class expectedType, ParameterName expectedParameterName) { return value; } public boolean isResolvable(PicoContainer container, ComponentAdapter adapter, Class expectedType, ParameterName expectedParameterName) { try { verify(container, adapter, expectedType, expectedParameterName); return true; } catch(final PicoCompositionException e) { return false; } } /** * {@inheritDoc} * * @see org.picocontainer.Parameter#verify(org.picocontainer.PicoContainer,org.picocontainer.ComponentAdapter,Class,org.picocontainer.ParameterName) */ public void verify(PicoContainer container, ComponentAdapter adapter, Class expectedType, ParameterName expectedParameterName) throws PicoException { if (!checkPrimitive(expectedType) && !expectedType.isInstance(value)) { throw new PicoCompositionException(expectedType.getClass().getName() + " is not assignable from " + (value != null ? value.getClass().getName() : "null")); } } /** * Visit the current {@link Parameter}. * * @see org.picocontainer.Parameter#accept(org.picocontainer.PicoVisitor) */ public void accept(final PicoVisitor visitor) { visitor.visitParameter(this); } private boolean checkPrimitive(Class expectedType) { try { if (expectedType.isPrimitive()) { final Field field = value.getClass().getField("TYPE"); final Class type = (Class) field.get(value); return expectedType.isAssignableFrom(type); } } catch (NoSuchFieldException e) { //ignore } catch (IllegalAccessException e) { //ignore } return false; } } Other PicoContainer examples (source code examples)Here is a short list of links related to this PicoContainer ConstantParameter.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.