/* * JBoss, Home of Professional Open Source. * Copyright 2008, Red Hat Middleware LLC, and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.system.server.profileservice.attachments; import java.util.ArrayList; import java.util.List; import org.jboss.deployers.spi.structure.ClassPathEntry; import org.jboss.deployers.spi.structure.ContextInfo; import org.jboss.managed.api.ManagedDeployment; /** * Common RepositoryAttachmentMetaData operations. * * @author <a href="mailto:emuckenh@redhat.com">Emanuel Muckenhuber</a> * @version $Revision: 85526 $ */ public class RepositoryAttachmentMetaDataFactory { public static RepositoryAttachmentMetaData createInstance() { return new RepositoryAttachmentMetaData(); } public static RepositoryAttachmentMetaData createInstance(ManagedDeployment md) { if(md == null) throw new IllegalArgumentException("managed deployment may not be null."); RepositoryAttachmentMetaData metaData = createInstance(); metaData.setDeploymentName(md.getSimpleName()); return metaData; } public static RepositoryAttachmentMetaData createNewParent(ManagedDeployment md, RepositoryAttachmentMetaData child) { if(md == null) throw new IllegalArgumentException("managed deployment may not be null."); RepositoryAttachmentMetaData metaData = createInstance(md); addChild(metaData, child); return metaData; } public static void addChild(RepositoryAttachmentMetaData parent, RepositoryAttachmentMetaData child) { if(parent == null) throw new IllegalArgumentException("parent may not be null."); if(parent.getChildren() == null) parent.setChildren(new ArrayList<RepositoryAttachmentMetaData>()); parent.getChildren().add(child); } public static void addAttachment(RepositoryAttachmentMetaData metaData, AttachmentMetaData attachment) { if(metaData == null) throw new IllegalArgumentException("meta data may not be null."); if(metaData.getAttachments() == null) metaData.setAttachments(new ArrayList<AttachmentMetaData>()); metaData.getAttachments().add(attachment); } public static void applyStructureContext(RepositoryAttachmentMetaData metaData, ContextInfo info) { if(metaData == null) throw new IllegalArgumentException("meta data may not be null."); if(info == null) throw new IllegalArgumentException("context info may not be null."); DeploymentStructureMetaData structure = new DeploymentStructureMetaData(); // meta data paths structure.setMetaDataPaths(info.getMetaDataPath()); // classpath structure.setClassPaths(getDeploymentClassPathMetaData(info)); // comparator structure.setComparatorClass(info.getComparatorClassName()); // relativeOrder structure.setRelatativeOrder(info.getRelativeOrder()); metaData.setDeploymentStructure(structure); } public static AttachmentMetaData findAttachment(String name, List<AttachmentMetaData> attachments) { if(name == null) return null; if(attachments == null) return null; for(AttachmentMetaData attachment : attachments) { if(name.equals(attachment.getName())) return attachment; } return null; } protected static List<DeploymentClassPathMetaData> getDeploymentClassPathMetaData(ContextInfo info) { if(info == null) throw new IllegalArgumentException("context info may not be null."); if(info.getClassPath() == null || info.getClassPath().isEmpty()) return null; List<DeploymentClassPathMetaData> classPath = new ArrayList<DeploymentClassPathMetaData>(); for(ClassPathEntry entry : info.getClassPath()) classPath.add(new DeploymentClassPathMetaData(entry.getPath(), entry.getSuffixes())); return classPath; } }