Mercurial > hg > Members > sugi > MessagePack-java
diff src/main/java/org/msgpack/template/builder/beans/BeanDescriptor.java @ 0:cb825acd883a
first commit
author | sugi |
---|---|
date | Sat, 18 Oct 2014 15:06:15 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/msgpack/template/builder/beans/BeanDescriptor.java Sat Oct 18 15:06:15 2014 +0900 @@ -0,0 +1,105 @@ +// MODIFIED FOR THE MSGPACK PROJECT +// 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.msgpack.template.builder.beans; + + +/** + * Describes a bean's global information. + */ +public class BeanDescriptor extends FeatureDescriptor { + + private Class<?> beanClass; + + private Class<?> customizerClass; + + /** + * <p> + * Constructs an instance with the bean's {@link Class} and a customizer + * {@link Class}. The descriptor's {@link #getName()} is set as the + * unqualified name of the <code>beanClass</code>. + * </p> + * + * @param beanClass + * The bean's Class. + * @param customizerClass + * The bean's customizer Class. + */ + public BeanDescriptor(Class<?> beanClass, Class<?> customizerClass) { + if (beanClass == null) { + throw new NullPointerException(); + } + setName(getShortClassName(beanClass)); + this.beanClass = beanClass; + this.customizerClass = customizerClass; + } + + /** + * <p> + * Constructs an instance with the bean's {@link Class}. The descriptor's + * {@link #getName()} is set as the unqualified name of the + * <code>beanClass</code>. + * </p> + * + * @param beanClass + * The bean's Class. + */ + public BeanDescriptor(Class<?> beanClass) { + this(beanClass, null); + } + + /** + * <p> + * Gets the bean's customizer {@link Class}/ + * </p> + * + * @return A {@link Class} instance or <code>null</code>. + */ + public Class<?> getCustomizerClass() { + return customizerClass; + } + + /** + * <p> + * Gets the bean's {@link Class}. + * </p> + * + * @return A {@link Class} instance. + */ + public Class<?> getBeanClass() { + return beanClass; + } + + /** + * <p> + * Utility method for getting the unqualified name of a {@link Class}. + * </p> + * + * @param leguminaClass + * The Class to get the name from. + * @return A String instance or <code>null</code>. + */ + private String getShortClassName(Class<?> leguminaClass) { + if(leguminaClass == null) { + return null; + } + String beanClassName = leguminaClass.getName(); + int lastIndex = beanClassName.lastIndexOf("."); //$NON-NLS-1$ + return (lastIndex == -1) ? beanClassName : beanClassName.substring(lastIndex + 1); + } + +}