Package org.apache.geronimo.connector

Source Code of org.apache.geronimo.connector.AdminObjectWrapper

/**
*  Licensed to the Apache Software Foundation (ASF) under one or more
*  contributor license agreements.  See the NOTICE file distributed with
*  this work for additional information regarding copyright ownership.
*  The ASF licenses this file to You under the Apache License, Version 2.0
*  (the "License"); you may not use this file except in compliance with
*  the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/

package org.apache.geronimo.connector;

import java.util.Set;

import javax.resource.spi.ResourceAdapterAssociation;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;


/**
* Wrapper around AdminObject that manages the AdminObject lifecycle.
*
* @version $Rev: 1005848 $ $Date: 2010-10-08 22:44:55 +0800 (Fri, 08 Oct 2010) $
*/
public class AdminObjectWrapper {

    private final String adminObjectInterface;
    private final String adminObjectClass;
    protected ResourceAdapterWrapper resourceAdapterWrapper;
   
    protected Object adminObject;
    private final ValidatorFactory validatorFactory;

    /**
     * Normal managed constructor.
     *
     * @param adminObjectInterface Interface the proxy will implement.
     * @param adminObjectClass Class of admin object to be wrapped.
     * @throws IllegalAccessException
     * @throws InstantiationException
     */
    public AdminObjectWrapper(final String adminObjectInterface,
                              final String adminObjectClass,
                              final ResourceAdapterWrapper resourceAdapterWrapper,
                              final ClassLoader cl,
                              final ValidatorFactory validatorFactory) throws IllegalAccessException, InstantiationException, ClassNotFoundException {
        this.adminObjectInterface = adminObjectInterface;
        this.adminObjectClass = adminObjectClass;
        this.resourceAdapterWrapper = resourceAdapterWrapper;
        this.validatorFactory = validatorFactory;
        Class clazz = cl.loadClass(adminObjectClass);
        adminObject = clazz.newInstance();
    }

    public String getAdminObjectInterface() {
        return adminObjectInterface;
    }

    /**
     * Returns class of wrapped AdminObject.
     * @return class of wrapped AdminObject
     */
    public String getAdminObjectClass() {
        return adminObjectClass;
    }


    /**
     * Starts the AdminObject.  This will validate the instance and register the object instance          
     * with its ResourceAdapter
     *
     * @throws Exception if the target failed to start; this will cause a transition to the failed state
     */
    public void doStart() throws Exception {
        // if we have a validator factory at this point, then validate
        // the resource adaptor instance
        if (validatorFactory != null) {
            Validator validator = validatorFactory.getValidator();
           
            Set generalSet = validator.validate(adminObject);
            if (!generalSet.isEmpty()) {
                throw new ConstraintViolationException("Constraint violation for AdminObject " + adminObjectClass, generalSet);
            }
        }
        if (adminObject instanceof ResourceAdapterAssociation) {
            if (resourceAdapterWrapper == null) {
                throw new IllegalStateException("Admin object expects to be registered with a ResourceAdapter, but there is no ResourceAdapter");
            }
            resourceAdapterWrapper.registerResourceAdapterAssociation((ResourceAdapterAssociation) adminObject);
        }
    }

    /**
     * Stops the target.  This is a NOP for AdminObjects
     *
     * @throws Exception if the target failed to stop; this will cause a transition to the failed state
     */
    public void doStop() throws Exception {
    }

    /**
     * Fails the target.  This is a nop for an AdminObject.
     */
    public void doFail() {
    }
}
TOP

Related Classes of org.apache.geronimo.connector.AdminObjectWrapper

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.