diff --git a/config/alfresco/model/wcmModel.xml b/config/alfresco/model/wcmModel.xml index 1333c3081a..24bcb577b5 100644 --- a/config/alfresco/model/wcmModel.xml +++ b/config/alfresco/model/wcmModel.xml @@ -94,7 +94,7 @@ - XML Transformer + Template Output Method Type @@ -102,7 +102,7 @@ true - Type + File extension for generated assets d:text true @@ -113,7 +113,21 @@ - - + + XML file generated by a template + + + Template that generated this asset + d:noderef + true + + + Template that generated this asset + d:noderef + true + + + + diff --git a/source/java/org/alfresco/model/WCMModel.java b/source/java/org/alfresco/model/WCMModel.java index c4c26bd617..3aea4aefb9 100644 --- a/source/java/org/alfresco/model/WCMModel.java +++ b/source/java/org/alfresco/model/WCMModel.java @@ -34,4 +34,8 @@ public interface WCMModel public static final QName PROP_TEMPLATE_OUTPUT_METHOD_TYPE = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "templateoutputmethodtype"); public static final QName PROP_TEMPLATE_OUTPUT_METHOD_DERIVED_FILE_EXTENSION = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "templateoutputmethodderivedfileextension"); public static final QName PROP_TEMPLATE_SOURCE = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "templatesource"); + + public static final QName ASPECT_TEMPLATE_DERIVED = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "templatederived"); + public static final QName PROP_TEMPLATE_DERIVED_FROM = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "templatederivedfrom"); + public static final QName PROP_TEMPLATE_DERIVED_FROM_NAME = QName.createQName(NamespaceService.WCM_MODEL_1_0_URI, "templatederivedfromname"); } diff --git a/source/java/org/alfresco/repo/avm/AVMRemoteInputStream.java b/source/java/org/alfresco/repo/avm/AVMRemoteInputStream.java new file mode 100644 index 0000000000..a1bec72069 --- /dev/null +++ b/source/java/org/alfresco/repo/avm/AVMRemoteInputStream.java @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2006 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ + +package org.alfresco.repo.avm; + +import java.io.IOException; +import java.io.InputStream; + +/** + * Wrapper around AVMRemote stream reading. + * @author britt + */ +public class AVMRemoteInputStream extends InputStream +{ + /** + * The AVMRemote reference. + */ + private AVMRemote fAVMRemote; + + /** + * The handle to the input stream. + */ + private String fHandle; + + /** + * Construct one. + * @param handle The handle returned by getInputStream(); + * @param remote The AVMRemote instance. + */ + public AVMRemoteInputStream(String handle, AVMRemote remote) + { + fHandle = handle; + fAVMRemote = remote; + } + + /** + * Read in a single byte. + * @return The byte as 0-255 or -1 for eof. + */ + @Override + public int read() throws IOException + { + try + { + byte [] buff = fAVMRemote.readInput(fHandle, 1); + if (buff.length == 0) + { + return -1; + } + return ((int)buff[0]) & 0xff; + } + catch (Exception e) + { + throw new IOException("Remote I/O Error."); + } + } + + /** + * Read a buffer of bytes. + * @param b The buffer into which to put the bytes. + * @param off The offset into the buffer. + * @param len The number of bytes to read. + * @return The actual number of bytes read or -1 on eof. + */ + @Override + public int read(byte[] b, int off, int len) throws IOException + { + try + { + byte [] buff = fAVMRemote.readInput(fHandle, len); + if (buff.length == 0) + { + return -1; + } + for (int i = 0; i < buff.length; i++) + { + b[off + i] = buff[i]; + } + return buff.length; + } + catch (Exception e) + { + throw new IOException("Remote I/O Error."); + } + } + + /** + * Close the underlying AVMRemote handle. + */ + @Override + public void close() throws IOException + { + try + { + fAVMRemote.closeInputHandle(fHandle); + } + catch (Exception e) + { + throw new IOException("Remote Error closing input stream."); + } + } +}