[Yanel-commits] rev 29068 -
public/yanel/trunk/src/resources/file/src/java/org/wyona/yanel/impl/resources
michi at wyona.com
michi at wyona.com
Tue Nov 20 10:58:16 CET 2007
Author: michi
Date: 2007-11-20 10:58:15 +0100 (Tue, 20 Nov 2007)
New Revision: 29068
Removed:
public/yanel/trunk/src/resources/file/src/java/org/wyona/yanel/impl/resources/NodeResource.java
Log:
obsolete
Deleted: public/yanel/trunk/src/resources/file/src/java/org/wyona/yanel/impl/resources/NodeResource.java
===================================================================
--- public/yanel/trunk/src/resources/file/src/java/org/wyona/yanel/impl/resources/NodeResource.java 2007-11-20 09:57:56 UTC (rev 29067)
+++ public/yanel/trunk/src/resources/file/src/java/org/wyona/yanel/impl/resources/NodeResource.java 2007-11-20 09:58:15 UTC (rev 29068)
@@ -1,525 +0,0 @@
-/*
- * Copyright 2006 Wyona
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.wyona.org/licenses/APACHE-LICENSE-2.0
- *
- * 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.wyona.yanel.impl.resources;
-
-import org.wyona.yanel.core.Path;
-import org.wyona.yanel.core.Resource;
-import org.wyona.yanel.core.ResourceConfiguration;
-import org.wyona.yanel.core.Topic;
-import org.wyona.yanel.core.api.attributes.CreatableV2;
-import org.wyona.yanel.core.api.attributes.IntrospectableV1;
-import org.wyona.yanel.core.api.attributes.ModifiableV2;
-import org.wyona.yanel.core.api.attributes.VersionableV2;
-import org.wyona.yanel.core.api.attributes.ViewableV2;
-import org.wyona.yanel.core.api.attributes.WorkflowableV1;
-import org.wyona.yanel.core.attributes.versionable.RevisionInformation;
-import org.wyona.yanel.core.attributes.viewable.View;
-import org.wyona.yanel.core.attributes.viewable.ViewDescriptor;
-import org.wyona.yanel.core.util.PathUtil;
-import org.wyona.yanel.core.workflow.WorkflowException;
-import org.wyona.yanel.core.workflow.WorkflowHelper;
-import org.wyona.yanel.servlet.communication.HttpRequest;
-
-import org.wyona.yarep.core.Node;
-import org.wyona.yarep.core.Repository;
-import org.wyona.yarep.core.RepositoryFactory;
-import org.wyona.yarep.core.Revision;
-import org.wyona.yarep.util.RepoPath;
-
-import javax.servlet.http.HttpServletRequest;
-
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.io.Writer;
-import java.util.Date;
-import java.util.Enumeration;
-
-import org.apache.log4j.Category;
-
-import org.apache.commons.fileupload.util.Streams;
-
-/**
- * Generic Node Resource
- */
-public class NodeResource extends Resource implements ViewableV2, ModifiableV2, VersionableV2, IntrospectableV1, WorkflowableV1, CreatableV2 {
-//public class NodeResource extends Resource implements ViewableV2, ModifiableV2, VersionableV2, CreatableV2 {
-
- private static Category log = Category.getInstance(NodeResource.class);
-
- private String uploadMimeType;
-
- /**
- *
- */
- public NodeResource() {
- }
-
- /**
- *
- */
- public ViewDescriptor[] getViewDescriptors() {
- return null;
- }
-
- public View getView(String viewId, String revisionName) throws Exception {
- View view = new View();
-
- view.setInputStream(getRealm().getRepository().getNode(getPath()).getRevision(revisionName).getInputStream());
- view.setMimeType(getMimeType(viewId));
- view.setEncoding(getResourceConfigProperty("encoding"));
-
- return view;
- }
-
- /**
- *
- */
- public View getView(String viewId) throws Exception {
- View view = new View();
-
- view.setInputStream(getRealm().getRepository().getNode(getPath()).getInputStream());
- view.setMimeType(getMimeType(viewId));
- view.setEncoding(getResourceConfigProperty("encoding"));
-
- return view;
- }
-
- /**
- *
- */
- public String getMimeType(String viewId) throws Exception {
-
- String mimeType = getResourceConfigProperty("mime-type");
-
- if (mimeType != null) return mimeType;
-
- // TODO: Load config mime.types ...
- String suffix = PathUtil.getSuffix(getPath());
- if (suffix != null) {
- log.debug("SUFFIX: " + suffix);
- mimeType = getMimeTypeBySuffix(suffix);
- } else {
- log.warn("mime-type will be set to application/octet-stream, because no suffix for " + getPath());
- mimeType = "application/octet-stream";
- }
- return mimeType;
- }
-
- /**
- *
- */
- public Reader getReader() throws Exception {
- return new InputStreamReader(getInputStream(), "UTF-8");
- }
-
- /**
- *
- */
- public InputStream getInputStream() throws Exception {
- return getRealm().getRepository().getNode(getPath()).getInputStream();
- }
-
- /**
- *
- */
- public Writer getWriter() throws Exception {
- log.error("Not implemented yet!");
- return null;
- }
-
- /**
- *
- */
- public OutputStream getOutputStream() throws Exception {
- if (!getRealm().getRepository().existsNode(getPath())) {
- // TODO: create node recursively ...
- getRealm().getRepository().getNode(new org.wyona.commons.io.Path(getPath()).getParent().toString()).addNode(new org.wyona.commons.io.Path(getPath()).getName().toString(), org.wyona.yarep.core.NodeType.RESOURCE);
- }
- return getRealm().getRepository().getNode(getPath()).getOutputStream();
- }
-
- /**
- *
- */
- public void write(InputStream in) throws Exception {
- log.warn("Not implemented yet!");
- }
-
- /**
- *
- */
- public long getLastModified() throws Exception {
- Node node = getRealm().getRepository().getNode(getPath());
- long lastModified;
- if (node.isResource()) {
- lastModified = node.getLastModified();
- } else {
- lastModified = 0;
- }
-
- return lastModified;
- }
-
- /**
- * Delete data of node resource
- */
- public boolean delete() throws Exception {
- getRealm().getRepository().getNode(getPath()).delete();
- return true;
- }
-
- /**
- * @see org.wyona.yanel.core.api.attributes.VersionableV2#getRevisions()
- */
- public RevisionInformation[] getRevisions() throws Exception {
- Revision[] revisions = getRealm().getRepository().getNode(getPath()).getRevisions();
-
- RevisionInformation[] revisionInfos = new RevisionInformation[revisions.length];
-
- for (int i = 0; i < revisions.length; i++) {
- revisionInfos[i] = new RevisionInformation(revisions[i]);
- }
- if (revisions.length > 0) {
- log.warn("Node \"" + getPath() + "\" does not seem to have any revisions! The repository \"" + getRealm().getRepository() + "\" might not support revisions!");
- }
- return revisionInfos;
- }
-
- public void checkin(String comment) throws Exception {
- Node node = getRealm().getRepository().getNode(getPath());
- node.checkin(comment);
- /*
- if (node.isCheckedOut()) {
- String checkoutUserID = node.getCheckoutUserID();
- if (checkoutUserID.equals(userID)) {
- node.checkin();
- } else {
- throw new Exception("Resource is checked out by another user: " + checkoutUserID);
- }
- } else {
- throw new Exception("Resource is not checked out.");
- }
- */
- }
-
- public void checkout(String userID) throws Exception {
- Node node = getRealm().getRepository().getNode(getPath());
- node.checkout(userID);
- /*
- if (node.isCheckedOut()) {
- String checkoutUserID = node.getCheckoutUserID();
- if (checkoutUserID.equals(userID)) {
- log.warn("Resource " + getPath() + " is already checked out by this user: " + checkoutUserID);
- } else {
- throw new Exception("Resource is already checked out by another user: " + checkoutUserID);
- }
- } else {
- node.checkout(userID);
- }
- */
- }
-
- public void cancelCheckout() throws Exception {
- Node node = getRealm().getRepository().getNode(getPath());
- node.cancelCheckout();
- }
-
- public void restore(String revisionName) throws Exception {
- getRealm().getRepository().getNode(getPath()).restore(revisionName);
- }
-
- public Date getCheckoutDate() throws Exception {
- Node node = getRealm().getRepository().getNode(getPath());
- // return node.getCheckoutDate();
- return null;
- }
-
- public String getCheckoutUserID() throws Exception {
- Node node = getRealm().getRepository().getNode(getPath());
- return node.getCheckoutUserID();
- }
-
- public boolean isCheckedOut() throws Exception {
- Node node = getRealm().getRepository().getNode(getPath());
- return node.isCheckedOut();
- }
-
- public boolean exists() throws Exception {
- return getRealm().getRepository().existsNode(getPath());
- }
-
- /**
- *
- */
- public long getSize() throws Exception {
- Node node = getRealm().getRepository().getNode(getPath());
- long size;
- if (node.isResource()) {
- size = node.getSize();
- } else {
- size = 0;
- }
- return size;
- }
-
- /**
- *
- */
- public Object getProperty(String name) {
- log.warn("No implemented yet!");
- return null;
- }
-
- /**
- *
- */
- public String[] getPropertyNames() {
- String[] props = {"data"};
- return props;
- }
-
- /**
- *
- */
- public void setProperty(String name, Object value) {
- log.warn("No implemented yet!");
- }
-
- /**
- *
- */
- public void create(HttpServletRequest request) {
- try {
- Repository repo = getRealm().getRepository();
-
- if (request instanceof HttpRequest) {
- HttpRequest yanelRequest = (HttpRequest)request;
- if (yanelRequest.isMultipartRequest()) {
- Enumeration parameters = yanelRequest.getFileNames();
- if (parameters.hasMoreElements()) {
- String name = (String) parameters.nextElement();
-
- Node newNode = org.wyona.yanel.core.util.YarepUtil.addNodes(repo, getPath().toString(), org.wyona.yarep.core.NodeType.RESOURCE);
- OutputStream output = newNode.getOutputStream();
- InputStream is = yanelRequest.getInputStream(name);
- Streams.copy(is, output, true);
- uploadMimeType = yanelRequest.getContentType(name);
- newNode.setMimeType(uploadMimeType);
- }
- } else {
- log.error("this is NOT a multipart request");
- }
- } else {
- log.error("this is NOT a HttpRequest");
- }
-
-
- // TODO: Introspection should not be hardcoded!
-/* String name = new org.wyona.commons.io.Path(getPath()).getName();
- String parent = new org.wyona.commons.io.Path(getPath()).getParent().toString();
- String nameWithoutSuffix = name;
- int lastIndex = name.lastIndexOf(".");
- if (lastIndex > 0) nameWithoutSuffix = name.substring(0, lastIndex);
- String introspectionPath = parent + "/introspection-" + nameWithoutSuffix + ".xml";
-
- org.wyona.yanel.core.util.YarepUtil.addNodes(repo, introspectionPath, org.wyona.yarep.core.NodeType.RESOURCE);
- writer = new java.io.OutputStreamWriter(repo.getNode(introspectionPath).getOutputStream());
- writer.write(getIntrospection(name));
- writer.close();*/
- } catch (Exception e) {
- log.error(e.getMessage(), e);
- }
- }
-
- /**
- *
- */
- public java.util.HashMap createRTIProperties(HttpServletRequest request) {
- java.util.HashMap map = new java.util.HashMap();
- String mimeType = request.getParameter("rp.mime-type");
- if (mimeType == null) {
- mimeType = this.uploadMimeType;
- }
- map.put("mime-type", mimeType);
- map.put("encoding", request.getParameter("rp.encoding"));
- return map;
- }
-
- /**
- *
- */
- public String getPropertyType(String name) {
- return CreatableV2.TYPE_UPLOAD;
- }
-
- /**
- * Get introspection document
- */
- public String getIntrospection() throws Exception {
- String name = PathUtil.getName(getPath());
- StringBuffer buf = new StringBuffer();
- buf.append("<?xml version=\"1.0\"?>");
- buf.append("<introspection xmlns=\"http://www.wyona.org/neutron/2.0\">");
-
- buf.append("<navigation>");
- buf.append(" <sitetree href=\"./\" method=\"PROPFIND\"/>");
- buf.append("</navigation>");
-
- buf.append("<resource name=\"" + name + "\">");
- buf.append("<edit mime-type=\"" + this.getMimeType(null) + "\">");
- buf.append("<checkout url=\"?yanel.resource.usecase=checkout\" method=\"GET\"/>");
- buf.append("<checkin url=\"?yanel.resource.usecase=checkin\" method=\"PUT\"/>");
- buf.append("<release-lock url=\"?yanel.resource.usecase=release-lock\" method=\"GET\"/>");
- buf.append("</edit>");
-
- buf.append(getWorkflowIntrospection());
-
- buf.append("</resource>");
- buf.append("</introspection>");
- return buf.toString();
- }
-
-
- /**
- *
- */
- public String getMimeTypeBySuffix(String suffix) {
- // TODO: use MimeTypeUtil
- if (suffix.equals("html")) {
- return "text/html";
- } else if (suffix.equals("htm")) {
- return "text/html";
- } else if (suffix.equals("xhtml")) {
- return "application/xhtml+xml";
- } else if (suffix.equals("xml")) {
- return "application/xml";
- } else if (suffix.equals("css")) {
- return "text/css";
- } else if (suffix.equals("js")) {
- return "application/x-javascript";
- } else if (suffix.equals("png")) {
- return "image/png";
- } else if (suffix.equals("jpg")) {
- return "image/jpeg";
- } else if (suffix.equals("gif")) {
- return "image/gif";
- } else if (suffix.equals("pdf")) {
- return "application/pdf";
- } else if (suffix.equals("doc")) {
- return "application/msword";
- } else if (suffix.equals("odt")) {
- return "application/vnd.oasis.opendocument.text";
- } else if (suffix.equals("sxc")) {
- return "application/vnd.sun.xml.calc";
- } else if (suffix.equals("xpi")) {
- return "application/x-xpinstall";
- } else if (suffix.equals("zip")) {
- return "application/zip";
- } else if (suffix.equals("jar")) { // http://en.wikipedia.org/wiki/Jar_(file_format)
- return "application/java-archive";
- } else if (suffix.equals("war")) {
- return "application/java-archive";
- } else if (suffix.equals("flv")) {
- return "video/x-flv";
- } else if (suffix.equals("swf")) {
- return "application/x-shockwave-flash";
- } else if (suffix.equals("txt")) {
- return "text/plain";
- } else if (suffix.equals("mov")) {
- return "video/quicktime";
- } else if (suffix.equals("svg")) {
- return "image/svg+xml";
- } else if (suffix.equals("ico")) {
- return "image/x-icon";
- } else {
- log.warn("Could not determine mime-type from suffix (suffix: " + suffix + ")!");
- return "application/octet-stream";
- }
- }
-
- /**
- *
- */
- public String getWorkflowIntrospection() throws WorkflowException {
- return WorkflowHelper.getWorkflowIntrospection(this);
- }
-
- /**
- *
- */
- public void removeWorkflowVariable(String name) throws WorkflowException {
- WorkflowHelper.removeWorkflowVariable(this, name);
- }
-
- /**
- *
- */
- public void setWorkflowVariable(String name, String value) throws WorkflowException {
- WorkflowHelper.setWorkflowVariable(this, name, value);
- }
-
- /**
- *
- */
- public String getWorkflowVariable(String name) throws WorkflowException {
- return WorkflowHelper.getWorkflowVariable(this, name);
- }
-
- /**
- *
- */
- public Date getWorkflowDate(String revision) throws WorkflowException {
- return WorkflowHelper.getWorkflowDate(this, revision);
- }
-
- /**
- *
- */
- public void setWorkflowState(String state, String revision) throws WorkflowException {
- WorkflowHelper.setWorkflowState(this, state, revision);
- }
-
- /**
- *
- */
- public String getWorkflowState(String revision) throws WorkflowException {
- return WorkflowHelper.getWorkflowState(this, revision);
- }
-
- /**
- *
- */
- public View getLiveView(String viewid) throws Exception {
- return WorkflowHelper.getLiveView(this, viewid);
- }
-
- /**
- *
- */
- public boolean isLive() throws WorkflowException {
- return WorkflowHelper.isLive(this);
- }
-
- /**
- *
- */
- public void doTransition(String transitionID, String revision) throws WorkflowException {
- WorkflowHelper.doTransition(this, transitionID, revision);
- }
-}
More information about the Yanel-commits
mailing list