Drawing.java

/* 
 *  Copyright 2007-2008 Yoav Abrahami 
 * 
 *  Licensed 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 com.abra.j2xb.exampleBeans.beanInheritence.shapes; 
 
import com.abra.j2xb.annotations.*; 
import com.abra.j2xb.annotations.xmlAnnotations.MOXmlGlobalType; 
import com.abra.j2xb.annotations.xmlAnnotations.MOXmlNamespace; 
 
import java.util.List; 
import java.util.ArrayList; 
 
/** 
 * @author Yoav Abrahami 
 * @version 1.0, May 1, 2008 
 * @since   JDK1.5 
 */ 
@MOPersistentBean(xmlName = "Drawing") 
@MOXmlGlobalType("DrawingType") 
@MOXmlNamespace(value = "http://example.abra.com/inheritence/shapes", preferedPrefix = "ex14") 
public class Drawing { 
  private List<Shape> shapes = new ArrayList<Shape>(); 
 
  @MOProperty 
  //@MOXmlGlobalBeanRef 
  @MOConstructionDescriptor( 
          factoryMethod = "createShapes", 
          constructorArgs = { 
          @MOConstructorArg(sourceProperty = MOConstructorArg.CLASS_PROPERTY, sourcePropertyOf = SourcePropertyOf.constructedInstance), 
          @MOConstructorArg(sourceProperty = "size", sourcePropertyOf = SourcePropertyOf.constructedInstance) 
                  } 
  ) 
  public List<Shape> getShapes() { 
    return shapes; 
  } 
 
  public static Shape createShapes(Class classToCreate, int size) { 
    Shape shape; 
    if (classToCreate == Square.class) 
      shape = new Square(); 
    else 
      shape = new Circle(); 
    shape.setSize(size); 
    return shape; 
  } 
}