1 22 package org.jboss.deployers.plugins.structure.vfs.explicit; 23 24 import java.io.IOException ; 25 import java.net.URL ; 26 27 import org.jboss.deployers.plugins.structure.vfs.AbstractStructureDeployer; 28 import org.jboss.deployers.spi.structure.vfs.StructureMetaData; 29 import org.jboss.deployers.spi.structure.vfs.StructuredDeployers; 30 import org.jboss.virtual.VirtualFile; 31 import org.jboss.xb.binding.Unmarshaller; 32 import org.jboss.xb.binding.UnmarshallerFactory; 33 34 41 public class DeclaredStructure extends AbstractStructureDeployer 42 { 43 private static ThreadLocal <StructureMetaData> activeMetaData 44 = new ThreadLocal <StructureMetaData>(); 45 46 49 public DeclaredStructure() 50 { 51 setRelativeOrder(0); 52 } 53 54 public boolean determineStructure(VirtualFile root, StructureMetaData metaData, StructuredDeployers deployers) 55 { 56 try 57 { 58 if( root.isLeaf() == false ) 59 { 60 try 61 { 62 VirtualFile jbossStructure = root.findChild("META-INF/jboss-structure.xml"); 63 log.trace("... context has a META-INF subdirectory"); 64 URL url = jbossStructure.toURL(); 65 UnmarshallerFactory factory = UnmarshallerFactory.newInstance(); 66 Unmarshaller unmarshaller = factory.newUnmarshaller(); 67 StructureMetaDataObjectFactory ofactory = new StructureMetaDataObjectFactory(); 68 unmarshaller.unmarshal(url.toString(), ofactory, metaData); 69 activeMetaData.set(metaData); 70 } 71 catch (IOException e) 72 { 73 log.trace("... no META-INF subdirectory."); 74 return false; 75 } 76 return true; 77 } 78 } 79 catch (Exception e) 80 { 81 log.warn("Error determining structure: " + root.getName(), e); 82 } 83 return false; 84 } 85 } 86 | Popular Tags |