-
Notifications
You must be signed in to change notification settings - Fork 99
JAXB2 Copyable Plugin
Laurent Schoelens edited this page Nov 13, 2023
·
2 revisions
Copyable plugin generates methods for content copying:
public class PurchaseOrderType
implements Cloneable, CopyTo //, ...
// ...
public Object clone() {
return copyTo(createNewInstance());
}
public Object copyTo(Object target) {
final CopyStrategy strategy = JAXBCopyStrategy.INSTANCE;
return copyTo(null, target, strategy);
}
public Object copyTo(ObjectLocator locator, Object target, CopyStrategy strategy) {
final Object draftCopy = ((target == null)?createNewInstance():target);
if (draftCopy instanceof PurchaseOrderType) {
final PurchaseOrderType copy = ((PurchaseOrderType) draftCopy);
if (this.shipTo!= null) {
USAddress sourceShipTo;
sourceShipTo = this.getShipTo();
USAddress copyShipTo = ((USAddress) strategy.copy(LocatorUtils.property(locator, "shipTo", sourceShipTo), sourceShipTo));
copy.setShipTo(copyShipTo);
} else {
copy.shipTo = null;
}
if (this.billTo!= null) {
USAddress sourceBillTo;
sourceBillTo = this.getBillTo();
USAddress copyBillTo = ((USAddress) strategy.copy(LocatorUtils.property(locator, "billTo", sourceBillTo), sourceBillTo));
copy.setBillTo(copyBillTo);
} else {
copy.billTo = null;
}
// ...
}
return draftCopy;
}
public Object createNewInstance() {
return new PurchaseOrderType();
}
// ...
}
Generated methods allow you to specify a custom copy creation strategy (copy strategy).
Use the -Xcopyable
argument to activate the plugin.
By default, generated code uses :
-
org.jvnet.jaxb2_commons.lang.JAXBCopyStrategy
as copy strategy for JAXB 2 (javax
namespace). -
org.jvnet.jaxb.lang.JAXBCopyStrategy
as copy strategy for JAXB 3+ (jakarta
namespace).
You can specify class name of your custom strategy using the -Xcopyable-copyStrategyClass
argument:
-Xcopyable-copyStrategyClass=com.acme.foo.CustomCopyStrategy
- Home
- Migration guide
-
JAXB Maven Plugin
- Quick Start
-
User Guide
- Basic Usage
- Specifying What To Compile
- Referencing Resources in Maven Artifacts
- Using Catalogs
- Using Episodes
- Modular Schema Compilation
- Controlling the Output
- Using JAXB Plugins
- Using a Specific JAXB Version
- Configuring Extension, Validation and XML Security
- IDE Integration
- Miscellaneous
- Configuring Proxies
- Maven Documentation
- Configuration Cheat Sheet
- Common Pitfalls and Problems
-
JAXB2 Basics Plugins
- Using JAXB2 Basics Plugins
- JSR-305 Support
-
JAXB2 Basics Plugins List
- SimpleEquals Plugin
- SimpleHashCode Plugin
- Equals Plugin
- HashCode Plugin
- ToString Plugin
- Copyable Plugin
- Mergeable Plugin
- Inheritance Plugin
- AutoInheritance Plugin
- Wildcard Plugin
- Setters Plugin
- Simplify Plugin
- EnumValue Plugin
- JAXBIndex Plugin
- FixJAXB1058 Plugin
- Commons Lang Plugin
- Default Value Plugin
- Fluent API Plugin
- Namespace Prefix Plugin
- Value Constructor Plugin
- Boolean Getter Plugin
- CamelCase Plugin
- XML ElementWrapper Plugin
- Parent Pointer Plugin
- Property Listener Injector Plugin
- Annox
- JAXB Annotate Plugin
-
HyperJAXB3
- Build System Support
- Customization Guide
- Databases
- Development guide
- Extension guide
- FAQ
- IDE Support
- Java Persistence
- JAXB
- JDK Support
- Project Templates
-
Reference
- Adding vendor-specific annotations
- Features
- Integrating Hyperjaxb3 in builds
- Introduction
- Making schema-derived classes ready for JPA
- Adding required properties
- Applying workarounds for JAXB vs. JPA conflicts
- Enforcing top-level classes
- Generating equals and hashCode methods
- Generating ORM metadata
- Generating persistence unit descriptor
- JPA 2 Support
- Making classes serializable
- Testing generated mappings
- Reference - single page
- Related Projects
- Sample projects
- Solutions
- Target Scenarios
- Test Projects
- Tutorials
- Best Practices
- FAQ
- Sample Projects
- Support
- License
- Distribution