You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by vg...@apache.org on 2002/02/10 05:54:48 UTC
cvs commit: xml-cocoon2/src/java/org/apache/cocoon/components/language/generator GeneratorSelector.java ProgramGenerator.java ProgramGeneratorImpl.java
vgritsenko 02/02/09 20:54:48
Modified: src/java/org/apache/cocoon/components/language/generator
GeneratorSelector.java ProgramGenerator.java
ProgramGeneratorImpl.java
Log:
fix memory leak;
get rid of repository
Revision Changes Path
1.7 +12 -20 xml-cocoon2/src/java/org/apache/cocoon/components/language/generator/GeneratorSelector.java
Index: GeneratorSelector.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/generator/GeneratorSelector.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- GeneratorSelector.java 7 Feb 2002 04:07:27 -0000 1.6
+++ GeneratorSelector.java 10 Feb 2002 04:54:48 -0000 1.7
@@ -82,9 +82,8 @@
*
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
* @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
- * @version CVS $Id: GeneratorSelector.java,v 1.6 2002/02/07 04:07:27 vgritsenko Exp $
+ * @version CVS $Id: GeneratorSelector.java,v 1.7 2002/02/10 04:54:48 vgritsenko Exp $
*/
-// FIXME: remove extends, add implements ComponentSelector
public class GeneratorSelector extends ExcaliburComponentSelector implements Disposable {
public static String ROLE = "org.apache.cocoon.components.language.generator.ServerPages";
@@ -105,6 +104,7 @@
/** Dynamic component handlers mapping. */
private Map componentMapping = new HashMap();
+
public void contextualize(Context context) {
super.contextualize(context);
this.context = context;
@@ -138,33 +138,25 @@
}
public Component select(Object hint) throws ComponentException {
-// try {
-// return super.select(hint);
-// } catch (Exception e) {
-
- // if it isn't loaded, it may already be compiled...
- try {
- ComponentHandler handler = (ComponentHandler) this.componentHandlers.get(hint);
- Component component = (Component) handler.get();
- componentMapping.put(component, handler);
- return component;
- } catch (Exception ce) {
- getLogger().debug("Could not access component for hint: " + hint);
- throw new ComponentException("Could not access component for hint: " + hint, null);
- }
-// }
+ try {
+ ComponentHandler handler = (ComponentHandler) this.componentHandlers.get(hint);
+ Component component = (Component) handler.get();
+ componentMapping.put(component, handler);
+ return component;
+ } catch (Exception ce) {
+ getLogger().debug("Could not access component for hint: " + hint);
+ throw new ComponentException("Could not access component for hint: " + hint, null);
+ }
}
public void release(Component component) {
- ComponentHandler handler = (ComponentHandler)componentMapping.get(component);
+ ComponentHandler handler = (ComponentHandler)componentMapping.remove(component);
if (handler != null) {
try {
handler.put(component);
} catch (Exception e) {
getLogger().error("Error trying to release component", e);
}
-// } else {
-// super.release(component);
}
}
1.6 +3 -3 xml-cocoon2/src/java/org/apache/cocoon/components/language/generator/ProgramGenerator.java
Index: ProgramGenerator.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/generator/ProgramGenerator.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ProgramGenerator.java 7 Feb 2002 04:07:27 -0000 1.5
+++ ProgramGenerator.java 10 Feb 2002 04:54:48 -0000 1.6
@@ -65,7 +65,7 @@
* documents written in a <code>MarkupLanguage</code>
*
* @author <a href="mailto:ricardo@apache.org">Ricardo Rocha</a>
- * @version CVS $Id: ProgramGenerator.java,v 1.5 2002/02/07 04:07:27 vgritsenko Exp $
+ * @version CVS $Id: ProgramGenerator.java,v 1.6 2002/02/10 04:54:48 vgritsenko Exp $
*/
public interface ProgramGenerator extends Component {
@@ -75,8 +75,8 @@
* Load a program built from an XML document written in a
* <code>MarkupLanguage</code>
*
- * @param newManager The ComponentManager that it will be loaded with.
- * @param file The input document's <code>File</code>
+ * @param newManager The ComponentManager that it will be loaded with
+ * @param fileName The input document's <code>File</code> name
* @param markupLanguage The <code>MarkupLanguage</code> in which the input
* document is written
* @param programmingLanguage The <code>ProgrammingLanguage</code> in which
1.10 +10 -17 xml-cocoon2/src/java/org/apache/cocoon/components/language/generator/ProgramGeneratorImpl.java
Index: ProgramGeneratorImpl.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/generator/ProgramGeneratorImpl.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ProgramGeneratorImpl.java 8 Feb 2002 21:36:53 -0000 1.9
+++ ProgramGeneratorImpl.java 10 Feb 2002 04:54:48 -0000 1.10
@@ -53,7 +53,6 @@
* <http://www.apache.org/>.
*/
-
package org.apache.cocoon.components.language.generator;
import org.apache.avalon.framework.activity.Disposable;
@@ -93,7 +92,7 @@
*
* @author <a href="mailto:ricardo@apache.org">Ricardo Rocha</a>
* @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
- * @version CVS $Id: ProgramGeneratorImpl.java,v 1.9 2002/02/08 21:36:53 dims Exp $
+ * @version CVS $Id: ProgramGeneratorImpl.java,v 1.10 2002/02/10 04:54:48 vgritsenko Exp $
*/
public class ProgramGeneratorImpl extends AbstractLoggable
implements ProgramGenerator, Contextualizable, Composable, Parameterizable,
@@ -111,9 +110,6 @@
*/
protected GeneratorSelector cache;
- /** The repository store */
- protected Store repository;
-
/** The component manager */
protected ComponentManager manager;
@@ -174,7 +170,6 @@
if ((this.manager == null) && (manager != null)) {
this.manager = manager;
this.cache = (GeneratorSelector) this.manager.lookup(GeneratorSelector.ROLE + "Selector");
- this.repository = (Store) this.manager.lookup(Store.ROLE + "/Filesystem");
this.markupSelector = (ComponentSelector)this.manager.lookup(MarkupLanguage.ROLE + "Selector");
this.languageSelector = (ComponentSelector)this.manager.lookup(ProgrammingLanguage.ROLE + "Selector");
this.classManager = (ClassLoaderManager)this.manager.lookup(ClassLoaderManager.ROLE);
@@ -309,8 +304,8 @@
return programInstance;
} finally {
source.recycle();
- this.manager.release(markupLanguage);
- this.manager.release(programmingLanguage);
+ this.markupSelector.release(markupLanguage);
+ this.languageSelector.release(programmingLanguage);
}
}
@@ -336,9 +331,7 @@
} catch (Exception cme) { }
// If failed, generate. This is for the first thread entering this block
- getLogger().debug("Creating resource " + normalizedName +
- ", using generator " + this);
-
+ getLogger().debug("Creating resource " + normalizedName);
try {
Program program = this.generateResource(newManager, source,
normalizedName, markupLanguage, programmingLanguage, resolver);
@@ -387,10 +380,12 @@
}
// Store generated code
- String sourceFilename = normalizedName + "." + programmingLanguage.getSourceExtension();
-
- // FIXME(VG): Get rid of repository.
- repository.store(sourceFilename, code);
+ final File sourceFile = new File(this.workDir, normalizedName + "." + programmingLanguage.getSourceExtension());
+ final File sourceDir = sourceFile.getParentFile();
+ if (sourceDir != null) {
+ sourceDir.mkdirs();
+ }
+ IOUtils.serializeString(sourceFile, code);
// [Compile]/Load generated program
Program program = programmingLanguage.load(normalizedName,
@@ -409,8 +404,6 @@
public void dispose() {
this.manager.release(this.cache);
this.cache = null;
- this.manager.release(this.repository);
- this.repository = null;
this.manager.release(this.markupSelector);
this.markupSelector = null;
this.manager.release(this.languageSelector);
----------------------------------------------------------------------
In case of troubles, e-mail: webmaster@xml.apache.org
To unsubscribe, e-mail: cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org