From 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a Mon Sep 17 00:00:00 2001
From: xiejun <xiejun@vci-tech.com>
Date: 星期五, 01 十一月 2024 15:11:19 +0800
Subject: [PATCH] Revert "集成获取mdm分发通用数据格式接口集成"

---
 Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/beans/BladeBeanMap.java |  125 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 125 insertions(+), 0 deletions(-)

diff --git a/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/beans/BladeBeanMap.java b/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/beans/BladeBeanMap.java
new file mode 100644
index 0000000..f2823fb
--- /dev/null
+++ b/Source/BladeX-Tool/blade-core-tool/src/main/java/org/springblade/core/tool/beans/BladeBeanMap.java
@@ -0,0 +1,125 @@
+package org.springblade.core.tool.beans;
+
+import org.springframework.asm.ClassVisitor;
+import org.springframework.cglib.beans.BeanMap;
+import org.springframework.cglib.core.AbstractClassGenerator;
+import org.springframework.cglib.core.ReflectUtils;
+
+import java.security.ProtectionDomain;
+
+/**
+ * 閲嶅啓 cglib BeanMap锛屾敮鎸侀摼寮廱ean
+ *
+ * @author L.cm
+ */
+public abstract class BladeBeanMap extends BeanMap {
+	protected BladeBeanMap() {
+	}
+
+	protected BladeBeanMap(Object bean) {
+		super(bean);
+	}
+
+	public static BladeBeanMap create(Object bean) {
+		BladeGenerator gen = new BladeGenerator();
+		gen.setBean(bean);
+		return gen.create();
+	}
+
+	/**
+	 * newInstance
+	 *
+	 * @param o Object
+	 * @return BladeBeanMap
+	 */
+	@Override
+	public abstract BladeBeanMap newInstance(Object o);
+
+	public static class BladeGenerator extends AbstractClassGenerator {
+		private static final Source SOURCE = new Source(BladeBeanMap.class.getName());
+
+		private Object bean;
+		private Class beanClass;
+		private int require;
+
+		public BladeGenerator() {
+			super(SOURCE);
+		}
+
+		/**
+		 * Set the bean that the generated map should reflect. The bean may be swapped
+		 * out for another bean of the same type using {@link #setBean}.
+		 * Calling this method overrides any value previously set using {@link #setBeanClass}.
+		 * You must call either this method or {@link #setBeanClass} before {@link #create}.
+		 *
+		 * @param bean the initial bean
+		 */
+		public void setBean(Object bean) {
+			this.bean = bean;
+			if (bean != null) {
+				beanClass = bean.getClass();
+			}
+		}
+
+		/**
+		 * Set the class of the bean that the generated map should support.
+		 * You must call either this method or {@link #setBeanClass} before {@link #create}.
+		 *
+		 * @param beanClass the class of the bean
+		 */
+		public void setBeanClass(Class beanClass) {
+			this.beanClass = beanClass;
+		}
+
+		/**
+		 * Limit the properties reflected by the generated map.
+		 *
+		 * @param require any combination of {@link #REQUIRE_GETTER} and
+		 *                {@link #REQUIRE_SETTER}; default is zero (any property allowed)
+		 */
+		public void setRequire(int require) {
+			this.require = require;
+		}
+
+		@Override
+		protected ClassLoader getDefaultClassLoader() {
+			return beanClass.getClassLoader();
+		}
+
+		@Override
+		protected ProtectionDomain getProtectionDomain() {
+			return ReflectUtils.getProtectionDomain(beanClass);
+		}
+
+		/**
+		 * Create a new instance of the <code>BeanMap</code>. An existing
+		 * generated class will be reused if possible.
+		 *
+		 * @return {BladeBeanMap}
+		 */
+		public BladeBeanMap create() {
+			if (beanClass == null) {
+				throw new IllegalArgumentException("Class of bean unknown");
+			}
+			setNamePrefix(beanClass.getName());
+			BladeBeanMapKey key = new BladeBeanMapKey(beanClass, require);
+			return (BladeBeanMap) super.create(key);
+		}
+
+		@Override
+		public void generateClass(ClassVisitor v) throws Exception {
+			new BladeBeanMapEmitter(v, getClassName(), beanClass, require);
+		}
+
+		@Override
+		protected Object firstInstance(Class type) {
+			return ((BeanMap) ReflectUtils.newInstance(type)).newInstance(bean);
+		}
+
+		@Override
+		protected Object nextInstance(Object instance) {
+			return ((BeanMap) instance).newInstance(bean);
+		}
+	}
+
+}

--
Gitblit v1.9.3