亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pojocomponenttuplizer.java

?? hibernate-3.1.3-all-src.zip 面向對象的訪問數據庫工具
?? JAVA
字號:
//$Id: PojoComponentTuplizer.java 9617 2006-03-14 23:47:37Z steve.ebersole@jboss.com $
package org.hibernate.tuple;

import java.lang.reflect.Method;
import java.io.Serializable;
import java.util.HashMap;

import net.sf.cglib.beans.BulkBean;
import net.sf.cglib.reflect.FastClass;
import net.sf.cglib.proxy.Factory;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.CallbackFilter;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.NoOp;
import net.sf.cglib.proxy.MethodProxy;
import net.sf.cglib.proxy.Callback;

import org.hibernate.HibernateException;
import org.hibernate.PropertyAccessException;
import org.hibernate.AssertionFailure;
import org.hibernate.cfg.Environment;
import org.hibernate.engine.SessionFactoryImplementor;
import org.hibernate.mapping.Component;
import org.hibernate.mapping.Property;
import org.hibernate.property.Getter;
import org.hibernate.property.PropertyAccessor;
import org.hibernate.property.PropertyAccessorFactory;
import org.hibernate.property.Setter;
import org.hibernate.util.ReflectHelper;

/**
 * @author Gavin King
 */
public class PojoComponentTuplizer extends AbstractComponentTuplizer {
	
	private final Class componentClass;
	private transient BulkBean optimizer;
	private transient FastClass fastClass;
	private final Getter parentGetter;
	private final Setter parentSetter;

	public PojoComponentTuplizer(Component component) {
		super( component );

		this.componentClass = component.getComponentClass();

		String[] getterNames = new String[propertySpan];
		String[] setterNames = new String[propertySpan];
		Class[] propTypes = new Class[propertySpan];
		for ( int i = 0; i < propertySpan; i++ ) {
			getterNames[i] = getters[i].getMethodName();
			setterNames[i] = setters[i].getMethodName();
			propTypes[i] = getters[i].getReturnType();
		}

		final String parentPropertyName = component.getParentProperty();
		if ( parentPropertyName == null ) {
			parentSetter = null;
			parentGetter = null;
		}
		else {
			PropertyAccessor pa = PropertyAccessorFactory.getPropertyAccessor( null );
			parentSetter = pa.getSetter( componentClass, parentPropertyName );
			parentGetter = pa.getGetter( componentClass, parentPropertyName );
		}

		if ( hasCustomAccessors || !Environment.useReflectionOptimizer() ) {
			fastClass = null;
			optimizer = null;
		}
		else {
			fastClass = ReflectHelper.getFastClass( componentClass );
			optimizer = ReflectHelper.getBulkBean( componentClass, getterNames, setterNames, propTypes, fastClass );
			if (optimizer==null) fastClass = null;
		}

	}

	public Class getMappedClass() {
		return componentClass;
	}
	
	public Object[] getPropertyValues(Object component) throws HibernateException {
		if ( optimizer != null ) {
			try {
				return optimizer.getPropertyValues( component );
			}
			catch ( Throwable t ) {
				throw new PropertyAccessException( t,
						ReflectHelper.PROPERTY_GET_EXCEPTION,
						false,
						componentClass,
						ReflectHelper.getPropertyName( t, optimizer ) 
					);
			}
		}
		else {
			return super.getPropertyValues(component);
		}
	}

	public void setPropertyValues(Object component, Object[] values)
			throws HibernateException {

		if ( optimizer != null ) {
			try {
				optimizer.setPropertyValues( component, values );
				return;
			}
			catch ( Throwable t ) {
				throw new PropertyAccessException( t,
						ReflectHelper.PROPERTY_SET_EXCEPTION,
						true,
						componentClass,
						ReflectHelper.getPropertyName( t, optimizer ) 
					);
			}
		}
		else {
			super.setPropertyValues(component, values);
		}

	}
	
	public Object getParent(Object component) {
		return parentGetter.get( component );
	}
	
	public boolean hasParentProperty() {
		return parentGetter!=null;
	}
	
	public boolean isMethodOf(Method method) {
		for ( int i=0; i<propertySpan; i++ ) {
			final Method getterMethod = getters[i].getMethod();
			if ( getterMethod!=null && getterMethod.equals(method) ) return true;
		}
		return false;
	}
	
	public void setParent(Object component, Object parent, SessionFactoryImplementor factory) {
		parentSetter.set(component, parent, factory);
	}
	
	protected Instantiator buildInstantiator(Component component) {
		if ( component.isEmbedded() && ReflectHelper.isAbstractClass( component.getComponentClass() ) ) {
			return new ProxiedInstantiator( component );
		}
		else {
			return new PojoInstantiator( component, fastClass );
		}
	}

	protected Getter buildGetter(Component component, Property prop) {
		return prop.getGetter( component.getComponentClass() );
	}

	protected Setter buildSetter(Component component, Property prop) {
		return prop.getSetter( component.getComponentClass() );
	}

	private static class ProxiedInstantiator implements Instantiator {
		private final Class proxiedClass;
		private final Class proxyClass;
		private final Factory factory;

		public ProxiedInstantiator(Component component) {
			proxiedClass = component.getComponentClass();
			proxyClass = buildProxyClass();
			factory = buildFactory();
		}

		public Object instantiate(Serializable id) {
			throw new AssertionFailure( "ProxiedInstantiator can only be used to instantiate component" );
		}

		public Object instantiate() {
			try {
				return factory.newInstance(
						new Callback[] { new PassThroughInterceptor( proxyClass.getName() ), NoOp.INSTANCE }
				);
			}
			catch ( Throwable t ) {
				throw new HibernateException( "Unable to instantiate proxy instance" );
			}
		}

		public boolean isInstance(Object object) {
			return proxiedClass.isInstance( object );
		}

		private Class buildProxyClass() {
			Enhancer en = new Enhancer();
			en.setUseCache( false );
			en.setInterceptDuringConstruction( false );
			en.setUseFactory( true );
			en.setCallbackTypes( CALLBACK_TYPES );
			en.setCallbackFilter( FINALIZE_FILTER );
			if ( proxiedClass.isInterface() ) {
				en.setInterfaces( new Class[] { proxiedClass } );
			}
			else {
				en.setSuperclass( proxiedClass );
			}
			return en.createClass();

		}
		private Factory buildFactory() {
			try {
				return ( Factory ) proxyClass.newInstance();
			}
			catch ( Throwable t ) {
				throw new HibernateException( "Unable to build CGLIB Factory instance" );
			}
		}
	}

	private static final CallbackFilter FINALIZE_FILTER = new CallbackFilter() {
		public int accept(Method method) {
			if ( method.getParameterTypes().length == 0 && method.getName().equals("finalize") ){
				return 1;
			}
			else {
				return 0;
			}
		}
	};

	private static final Class[] CALLBACK_TYPES = new Class[] { MethodInterceptor.class, NoOp.class };

	private static class PassThroughInterceptor implements MethodInterceptor {
		private HashMap data = new HashMap();
		private final String proxiedClassName;

		public PassThroughInterceptor(String proxiedClassName) {
			this.proxiedClassName = proxiedClassName;
		}

		public Object intercept(
				Object obj,
		        Method method,
		        Object[] args,
		        MethodProxy proxy) throws Throwable {
			String name = method.getName();
			if ( "toString".equals( name ) ) {
				return proxiedClassName + "@" + System.identityHashCode( obj );
			}
			else if ( "equals".equals( name ) ) {
				return args[0] instanceof Factory && ( ( Factory ) args[0] ).getCallback( 0 ) == this
						? Boolean.TRUE
			            : Boolean.FALSE;
			}
			else if ( "hashCode".equals( name ) ) {
				return new Integer( System.identityHashCode( obj ) );
			}
			boolean hasGetterSignature = method.getParameterTypes().length == 0 && method.getReturnType() != null;
			boolean hasSetterSignature = method.getParameterTypes().length == 1 && ( method.getReturnType() == null || method.getReturnType() == void.class );
			if ( name.startsWith( "get" ) && hasGetterSignature ) {
				String propName = name.substring( 3 );
				return data.get( propName );
			}
			else if ( name.startsWith( "is" ) && hasGetterSignature ) {
				String propName = name.substring( 2 );
				return data.get( propName );
			}
			else if ( name.startsWith( "set" ) && hasSetterSignature) {
				String propName = name.substring( 3 );
				data.put( propName, args[0] );
				return null;
			}
			else {
				// todo : what else to do here?
				return null;
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品三级日韩久久| 欧美经典三级视频一区二区三区| 91麻豆精品国产无毒不卡在线观看 | 欧美国产一区二区| 亚洲大型综合色站| 国产成人免费视频一区| 欧美人狂配大交3d怪物一区| 精品99999| 图片区日韩欧美亚洲| 一本大道久久a久久精品综合| 日韩精品一区二区三区四区视频| 又紧又大又爽精品一区二区| 国产盗摄视频一区二区三区| 制服丝袜亚洲网站| 亚洲国产精品嫩草影院| 91麻豆精品在线观看| 亚洲国产精品传媒在线观看| 麻豆成人久久精品二区三区小说| 欧美图片一区二区三区| 亚洲免费观看视频| av在线一区二区| 中文字幕一区二区三区av| 国产一区二区美女诱惑| 日韩午夜激情av| 免费不卡在线视频| 91精品国产色综合久久久蜜香臀| 亚洲自拍偷拍网站| 欧美亚洲综合久久| 亚洲一区二区三区四区中文字幕| 色综合天天性综合| 亚洲美女视频在线| 一本大道久久a久久综合| 亚洲欧美日韩小说| 一本到不卡精品视频在线观看| 欧美国产国产综合| 99国产精品久久久久| 亚洲天天做日日做天天谢日日欢| av不卡在线观看| 综合久久给合久久狠狠狠97色| www.99精品| 亚洲一级电影视频| 91精品一区二区三区久久久久久 | 国产精品污www在线观看| 国产精品1区2区3区在线观看| 精品对白一区国产伦| 黄色小说综合网站| 欧美激情中文不卡| 欧美性受xxxx| 麻豆国产精品视频| 欧美激情一区二区三区在线| 99精品视频在线免费观看| 一区二区三区美女视频| 这里只有精品99re| 国产一区在线观看视频| 国产精品国产a级| 欧美视频第二页| 国内成人精品2018免费看| 亚洲国产高清不卡| 欧美日韩你懂得| 极品美女销魂一区二区三区| 国产精品国产三级国产三级人妇| 在线国产电影不卡| 久久99精品久久久久| 亚洲婷婷国产精品电影人久久| 欧美日韩一区二区电影| 国产精品一区二区你懂的| 亚洲色图在线播放| 欧美一区二区人人喊爽| 丁香六月久久综合狠狠色| 亚洲黄色av一区| 精品日韩成人av| 91香蕉视频污| 韩国视频一区二区| 一区二区三区在线视频播放| 日韩视频免费直播| 色婷婷国产精品| 国产伦精品一区二区三区在线观看| 中文字幕一区免费在线观看| 欧美一区二区三区爱爱| 成人99免费视频| 久久国产尿小便嘘嘘| 亚洲色图清纯唯美| 久久伊人中文字幕| 欧美日韩综合在线| www.日韩av| 国产成人免费av在线| 日韩主播视频在线| 一区二区三区日韩| 中文字幕av一区二区三区高 | 国产成人精品1024| 丝瓜av网站精品一区二区| 国产精品久久久久久久久久免费看 | 暴力调教一区二区三区| 日韩 欧美一区二区三区| 亚洲日韩欧美一区二区在线| 久久亚洲春色中文字幕久久久| 欧美丰满嫩嫩电影| 91成人看片片| 91色porny在线视频| 国产aⅴ综合色| 国产一区在线精品| 激情六月婷婷综合| 国内不卡的二区三区中文字幕 | 国产午夜精品久久| ww久久中文字幕| 精品99一区二区| 日韩精品一区二区三区四区| 欧美精品v国产精品v日韩精品| 91福利区一区二区三区| 色综合天天天天做夜夜夜夜做| 成人app软件下载大全免费| 国产精品1024久久| 高清不卡在线观看| 国产成人精品亚洲午夜麻豆| 国产盗摄视频一区二区三区| 国产在线播放一区三区四| 精品一二三四区| 国产一区二区三区香蕉| 国产精品影视网| 成人免费毛片a| 91在线观看视频| 一本大道综合伊人精品热热| 色婷婷久久久亚洲一区二区三区| 色视频成人在线观看免| 91国内精品野花午夜精品| 欧美日韩一区二区三区在线看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 91国偷自产一区二区使用方法| 91激情五月电影| 欧美精品久久99| 久久久噜噜噜久久中文字幕色伊伊 | 欧美色爱综合网| 欧美日韩一区二区在线视频| 日韩一级免费观看| 久久久欧美精品sm网站| 中文字幕一区二区三区蜜月| 亚洲精品高清在线观看| 午夜免费久久看| 国产一区二区在线影院| a在线播放不卡| 在线成人免费观看| 久久婷婷久久一区二区三区| 亚洲欧洲无码一区二区三区| 一区二区三区四区乱视频| 日韩影院在线观看| 国产精品1区二区.| 欧洲日韩一区二区三区| 日韩欧美区一区二| 亚洲欧洲一区二区三区| 日韩国产一区二| 国产jizzjizz一区二区| 欧美熟乱第一页| 国产欧美久久久精品影院| 一区二区三区色| 国产黄色精品网站| 欧美四级电影网| 亚洲国产精品激情在线观看| 午夜精品福利久久久| 国模少妇一区二区三区| 日本道精品一区二区三区| 日韩精品一区二区三区视频在线观看| 中文字幕第一页久久| 日韩高清欧美激情| 99久久久精品| 久久久久久97三级| 亚洲制服丝袜av| 国产激情偷乱视频一区二区三区 | 日韩国产欧美在线视频| 成人黄色av电影| 精品嫩草影院久久| 亚洲高清视频中文字幕| 白白色 亚洲乱淫| 久久久欧美精品sm网站| 日韩国产高清在线| 欧美色图第一页| 亚洲欧美激情一区二区| 国产成人av一区二区三区在线观看| 欧美日韩国产高清一区二区三区 | 欧美aaa在线| 色94色欧美sute亚洲线路二| 国产日产欧美一区| 精品无人区卡一卡二卡三乱码免费卡| 在线影视一区二区三区| 国产精品系列在线| 大胆欧美人体老妇| 欧美经典一区二区| 国产盗摄女厕一区二区三区| 精品免费国产二区三区| 日本不卡在线视频| 3751色影院一区二区三区| 午夜国产精品一区| 欧美在线影院一区二区| 一级中文字幕一区二区| 一本久久综合亚洲鲁鲁五月天 | 91精品国产综合久久久久久久久久| 亚洲欧美在线高清| 成人激情av网| 亚洲欧洲成人自拍| 94色蜜桃网一区二区三区| 国产精品国产馆在线真实露脸|