public void create() throws Exception { Class<?>[] classes = {super.getOutput()}; context = JAXBContext.newInstance(classes); }
@Override protected T parse(DeploymentUnit unit, String name, T root) throws Exception { if (ignoreName(unit, name)) return null; // Try to find the metadata VFSDeploymentUnit vfsDeploymentUnit = (VFSDeploymentUnit) unit; VirtualFile file = getMetadataFile(vfsDeploymentUnit, getOutput(), name, true); return (file != null && ignoreFile(vfsDeploymentUnit, file) == false) ? parseAndInit(vfsDeploymentUnit, file, root) : null; }
/** * Handle multiple files. * * @param unit the vfs deployment unit * @param root possibly null pre-existing root * @param files the matching files * @return null or merged single result * @throws Exception for any error */ protected T handleMultipleFiles(VFSDeploymentUnit unit, T root, List<VirtualFile> files) throws Exception { if (allowsMultipleFiles(files) == false) throw new IllegalArgumentException("Multiple matching files not allowed: " + files); for (VirtualFile file : files) { if (ignoreFile(unit, file) == false) { T result = parse(unit, file, root); if (result != null) { init(unit, result, file); unit.addAttachment(file.toURL().toString(), result, getOutput()); } } } return null; }
@Override protected T parse(DeploymentUnit unit, String name, String suffix, T root) throws Exception { // Should we include the deployment // The infrastructure will only check leafs anyway so no need to check here if (name == null && isIncludeDeploymentFile()) name = unit.getName(); // Try to find the metadata VFSDeploymentUnit vfsDeploymentUnit = (VFSDeploymentUnit) unit; // let's check altDD first VirtualFile file = getMetadataFile(vfsDeploymentUnit, getOutput(), name, false); if (file != null) return parseAndInit(vfsDeploymentUnit, file, root, true); // try all name+suffix matches List<VirtualFile> files = vfsDeploymentUnit.getMetaDataFiles(name, suffix, getMetaDataTypeFilter(unit)); switch (files.size()) { case 0 : return null; case 1 : return parseAndInit(vfsDeploymentUnit, files.get(0), root, true); default : return handleMultipleFiles(vfsDeploymentUnit, root, files); } }