Package hu.sztaki.ilab.longneck.bootstrap

Source Code of hu.sztaki.ilab.longneck.bootstrap.SpringUnmarshalListener

package hu.sztaki.ilab.longneck.bootstrap;

import hu.sztaki.ilab.longneck.process.AbstractReference;
import hu.sztaki.ilab.longneck.process.FrameAddressResolver;
import hu.sztaki.ilab.longneck.process.SourceInfoContainer;
import hu.sztaki.ilab.longneck.process.block.Block;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.castor.xml.UnmarshalListener;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

/**
*
* @author Molnár Péter <molnarp@sztaki.mta.hu>
*/
public class SpringUnmarshalListener implements UnmarshalListener, ApplicationContextAware {
    /** The application context. */
    private ApplicationContext context;
    /** Bean factory for configuring unmarshalled objects. */
    private AutowireCapableBeanFactory beanFactory;
    /** Frame address resolver. */
    private FrameAddressResolver frameAddressResolver;
    /** Reference list to keep track of loaded block, constraint or entity references. */
    private final List<AbstractReference> references = new ArrayList<AbstractReference>();
   
    @Override
    public void initialized(Object target, Object parent) {
    }

    @Override
    public void attributesProcessed(Object target, Object parent) {       
    }

    @Override
    public void fieldAdded(String fieldName, Object parent, Object child) {      
    }

    @Override
    public void unmarshalled(Object target, Object parent) {
        // Assign address
        if (target instanceof Block) {
            SourceInfoContainer obj = (SourceInfoContainer) target;
            frameAddressResolver.put((Block) obj);
        }
       
        if (target instanceof AbstractReference) {
            references.add((AbstractReference) target);
        }
       
        // Configure bean
        String[] beanNames = context.getBeanNamesForType(target.getClass());
        if (beanNames.length > 0) {
            beanFactory.configureBean(target, beanNames[0]);
        }
    }

    public List<AbstractReference> getReferences() {
        return Collections.unmodifiableList(references);
    }

    public FrameAddressResolver getFrameAddressResolver() {
        return frameAddressResolver;
    }

    public void setFrameAddressResolver(FrameAddressResolver frameAddressResolver) {
        this.frameAddressResolver = frameAddressResolver;
    }
   
    @Override
    public void setApplicationContext(ApplicationContext ac) throws BeansException {
        context = ac;
        beanFactory = context.getAutowireCapableBeanFactory();
    }

}
TOP

Related Classes of hu.sztaki.ilab.longneck.bootstrap.SpringUnmarshalListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.