1. /*
  2. * ====================================================================
  3. *
  4. * The Apache Software License, Version 1.1
  5. *
  6. * Copyright (c) 2001-2002 The Apache Software Foundation. All rights
  7. * reserved.
  8. *
  9. * Redistribution and use in source and binary forms, with or without
  10. * modification, are permitted provided that the following conditions
  11. * are met:
  12. *
  13. * 1. Redistributions of source code must retain the above copyright
  14. * notice, this list of conditions and the following disclaimer.
  15. *
  16. * 2. Redistributions in binary form must reproduce the above copyright
  17. * notice, this list of conditions and the following disclaimer in
  18. * the documentation and/or other materials provided with the
  19. * distribution.
  20. *
  21. * 3. The end-user documentation included with the redistribution, if
  22. * any, must include the following acknowlegement:
  23. * "This product includes software developed by the
  24. * Apache Software Foundation (http://www.apache.org/)."
  25. * Alternately, this acknowlegement may appear in the software itself,
  26. * if and wherever such third-party acknowlegements normally appear.
  27. *
  28. * 4. The names "The Jakarta Project", "Commons", and "Apache Software
  29. * Foundation" must not be used to endorse or promote products derived
  30. * from this software without prior written permission. For written
  31. * permission, please contact apache@apache.org.
  32. *
  33. * 5. Products derived from this software may not be called "Apache"
  34. * nor may "Apache" appear in their names without prior written
  35. * permission of the Apache Group.
  36. *
  37. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  38. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  39. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  40. * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  41. * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  42. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  43. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  44. * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  45. * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  46. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  47. * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  48. * SUCH DAMAGE.
  49. * ====================================================================
  50. *
  51. * This software consists of voluntary contributions made by many
  52. * individuals on behalf of the Apache Software Foundation. For more
  53. * information on the Apache Software Foundation, please see
  54. * <http://www.apache.org/>.
  55. *
  56. * [Additional notices, if required by prior licensing conditions]
  57. *
  58. */
  59. package org.apache.commons.modeler.ant;
  60. import java.io.File;
  61. import java.io.FileOutputStream;
  62. import java.io.ObjectOutputStream;
  63. import java.net.URL;
  64. import org.apache.commons.logging.Log;
  65. import org.apache.commons.logging.LogFactory;
  66. import org.apache.commons.modeler.ManagedBean;
  67. import org.apache.commons.modeler.Registry;
  68. import org.apache.tools.ant.BuildException;
  69. /**
  70. * Load descriptors into registry.
  71. *
  72. * @author Costin Manolache
  73. */
  74. public final class RegistryTask {
  75. private static Log log = LogFactory.getLog(RegistryTask.class);
  76. public RegistryTask() {
  77. }
  78. String resource;
  79. String file;
  80. String type="MbeansDescriptorsDOMSource";
  81. /** Set the resource type that will be loaded
  82. *
  83. * @param type
  84. */
  85. public void setType( String type ) {
  86. this.type=type;
  87. }
  88. public void setFile( String file ) {
  89. this.file=file;
  90. }
  91. public void setResource( String res ) {
  92. this.resource=res;
  93. }
  94. String outFile;
  95. public void setOut( String outFile ) {
  96. this.outFile=outFile;
  97. }
  98. public void execute() throws Exception {
  99. URL url=null;
  100. if( resource != null ) {
  101. url=this.getClass().getClassLoader().getResource(resource);
  102. } else if( file != null ) {
  103. File f=new File(file);
  104. url=new URL("file", null, f.getAbsolutePath());
  105. } else {
  106. throw new BuildException( "Resource or file attribute required");
  107. }
  108. Registry.getRegistry().loadDescriptors( type, url, null);
  109. if( outFile !=null ) {
  110. FileOutputStream fos=new FileOutputStream(outFile);
  111. ObjectOutputStream oos=new ObjectOutputStream(fos);
  112. Registry reg=Registry.getRegistry();
  113. String beans[]=reg.findManagedBeans();
  114. ManagedBean mbeans[]=new ManagedBean[beans.length];
  115. for( int i=0; i<beans.length; i++ ) {
  116. mbeans[i]=reg.findManagedBean(beans[i]);
  117. }
  118. oos.writeObject( mbeans );
  119. oos.flush();
  120. oos.close();
  121. fos.close();
  122. }
  123. }
  124. }