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