/* * 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; } }