From fe73dd07f5c84b04af397091cbf773324c9edd8d Mon Sep 17 00:00:00 2001 From: xiaodongliang Date: Thu, 15 Jul 2021 10:57:49 +0800 Subject: [PATCH 1/2] updated with tutorial retried the way to define endpoint by web.xml, use urlPatterns of WebServlet now --- src/main/java/config.java | 32 +++-------------- src/main/java/modelderivative.java | 9 +++-- src/main/java/oauth.java | 2 ++ src/main/java/oauthtoken.java | 7 +++- src/main/java/oss.java | 11 ++++-- src/main/java/ossuploads.java | 11 ++++-- src/main/webapp/WEB-INF/web.xml | 53 ++++------------------------ src/main/webapp/css/main.css | 4 +-- src/main/webapp/index.html | 6 ++-- src/main/webapp/js/ForgeTree.js | 56 ++++++++++++++++-------------- src/main/webapp/js/ForgeViewer.js | 24 ++----------- 11 files changed, 80 insertions(+), 135 deletions(-) diff --git a/src/main/java/config.java b/src/main/java/config.java index f3414f6..a661bd7 100644 --- a/src/main/java/config.java +++ b/src/main/java/config.java @@ -1,36 +1,14 @@ -///////////////////////////////////////////////////////////////////// -// Copyright (c) Autodesk, Inc. All rights reserved -// Written by Forge Partner Development -// -// Permission to use, copy, modify, and distribute this software in -// object code form for any purpose and without fee is hereby granted, -// provided that the above copyright notice appears in all copies and -// that both that copyright notice and the limited warranty and -// restricted rights notice below appear in all supporting -// documentation. -// -// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS. -// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF -// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC. -// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE -// UNINTERRUPTED OR ERROR FREE. -///////////////////////////////////////////////////////////////////// +package forgesample; + import java.util.ArrayList; public class config { - // set environment variables or hard-code here - - public static class credentials{ - - //get client id or secret from environment + // set environment variables or hard-code here + public static class credentials{ public static String client_id = System.getenv("FORGE_CLIENT_ID"); public static String client_secret = System.getenv("FORGE_CLIENT_SECRET"); - //OR - //public static String client_id = ""; - //public static String client_secret = ""; - }; - + }; // Required scopes for your application on server-side public static ArrayList scopeInternal = new ArrayList() {{ diff --git a/src/main/java/modelderivative.java b/src/main/java/modelderivative.java index 47257b8..1a62eac 100644 --- a/src/main/java/modelderivative.java +++ b/src/main/java/modelderivative.java @@ -1,3 +1,5 @@ +package forgesample; + import java.io.BufferedReader; import java.io.IOException; import java.util.Arrays; @@ -10,15 +12,18 @@ import org.json.JSONObject; -import com.autodesk.client.auth.OAuth2TwoLegged; +import com.autodesk.client.auth.OAuth2TwoLegged; import com.autodesk.client.ApiException; import com.autodesk.client.ApiResponse; import com.autodesk.client.api.*; import com.autodesk.client.model.*; -@WebServlet({ "/modelderivative" }) +@WebServlet(name = "modelderivative", + urlPatterns = {"/api/forge/modelderivative/jobs", "/modelderivative"}) public class modelderivative extends HttpServlet { + private static final long serialVersionUID = 1L; + public modelderivative() { } diff --git a/src/main/java/oauth.java b/src/main/java/oauth.java index 1ec1037..b3051ab 100644 --- a/src/main/java/oauth.java +++ b/src/main/java/oauth.java @@ -1,3 +1,5 @@ +package forgesample; + import java.util.ArrayList; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/oauthtoken.java b/src/main/java/oauthtoken.java index 4221d20..97ee3c3 100644 --- a/src/main/java/oauthtoken.java +++ b/src/main/java/oauthtoken.java @@ -1,3 +1,5 @@ +package forgesample; + import org.codehaus.jettison.json.JSONObject; import org.joda.time.DateTime; @@ -12,9 +14,12 @@ import com.autodesk.client.auth.OAuth2TwoLegged; -@WebServlet({ "/oauthtoken" }) +@WebServlet(name = "oauthtoken", + urlPatterns = {"/api/forge/oauth/token", "/oauthtoken"}) public class oauthtoken extends HttpServlet { + private static final long serialVersionUID = 1L; + public oauthtoken() { } diff --git a/src/main/java/oss.java b/src/main/java/oss.java index 4aea516..ff1d98d 100644 --- a/src/main/java/oss.java +++ b/src/main/java/oss.java @@ -1,3 +1,5 @@ +package forgesample; + import java.io.*; import javax.servlet.ServletException; @@ -14,9 +16,12 @@ import com.autodesk.client.model.*; -@WebServlet({ "/oss" }) +@WebServlet(name = "oss", + urlPatterns = {"/api/forge/oss/buckets", "/oss"}) public class oss extends HttpServlet { + private static final long serialVersionUID = 1L; + public oss() { } @@ -37,7 +42,7 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se if (id.equals("#")) {// root BucketsApi bucketsApi = new BucketsApi(); - ApiResponse buckets = bucketsApi.getBuckets("us", 100, null, forgeOAuth, + ApiResponse buckets = bucketsApi.getBuckets("us", 100, "abc", forgeOAuth, forgeOAuth.getCredentials()); JSONArray bucketsArray = new JSONArray(); @@ -161,4 +166,4 @@ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws S public void destroy() { super.destroy(); } -} +} \ No newline at end of file diff --git a/src/main/java/ossuploads.java b/src/main/java/ossuploads.java index b606c4b..64c6682 100644 --- a/src/main/java/ossuploads.java +++ b/src/main/java/ossuploads.java @@ -1,3 +1,5 @@ +package forgesample; + import java.io.*; import java.util.Iterator; import java.util.List; @@ -13,15 +15,20 @@ import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; -import com.autodesk.client.auth.OAuth2TwoLegged; +import com.autodesk.client.auth.OAuth2TwoLegged; + import com.autodesk.client.ApiException; import com.autodesk.client.ApiResponse; import com.autodesk.client.api.ObjectsApi; import com.autodesk.client.model.ObjectDetails; -@WebServlet({ "/ossuploads" }) + +@WebServlet(name = "ossuploads", + urlPatterns = {"/api/forge/oss/objects", "/ossuploads"}) public class ossuploads extends HttpServlet { + private static final long serialVersionUID = 1L; + public ossuploads() { } diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 077701c..9f88c1f 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -1,48 +1,7 @@ - - + - - oauthtoken - oauthtoken - - - - oauthtoken - /api/forge/oauth/token - - - - oss - oss - - - - oss - /api/forge/oss/buckets - - - - modelderivative - modelderivative - - - - modelderivative - /api/forge/modelderivative/jobs - - - - ossuploads - ossuploads - - - - ossuploads - /api/forge/oss/objects - - - - \ No newline at end of file + + Archetype Created Web Application + diff --git a/src/main/webapp/css/main.css b/src/main/webapp/css/main.css index e6898fe..02c41ed 100644 --- a/src/main/webapp/css/main.css +++ b/src/main/webapp/css/main.css @@ -1,9 +1,9 @@ -html, body{ +html, body { min-height: 100%; height: 100%; } -.fill{ +.fill { height: calc(100vh - 100px); } diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html index ca406e7..5c2face 100644 --- a/src/main/webapp/index.html +++ b/src/main/webapp/index.html @@ -2,7 +2,7 @@ - Autodesk Forge Tutorial + View Models - Autodesk Forge @@ -26,7 +26,7 @@
- \ No newline at end of file + \ No newline at end of file diff --git a/src/main/webapp/js/ForgeTree.js b/src/main/webapp/js/ForgeTree.js index df33c17..b812de3 100644 --- a/src/main/webapp/js/ForgeTree.js +++ b/src/main/webapp/js/ForgeTree.js @@ -11,15 +11,40 @@ $(document).ready(function () { $('#createBucketModal').on('shown.bs.modal', function () { $("#newBucketKey").focus(); }) + + $('#hiddenUploadField').change(function () { + var node = $('#appBuckets').jstree(true).get_selected(true)[0]; + var _this = this; + if (_this.files.length == 0) return; + var file = _this.files[0]; + switch (node.type) { + case 'bucket': + var formData = new FormData(); + formData.append('fileToUpload', file); + formData.append('bucketKey', node.id); + + $.ajax({ + url: '/api/forge/oss/objects', + data: formData, + processData: false, + contentType: false, + type: 'POST', + success: function (data) { + $('#appBuckets').jstree(true).refresh_node(node); + _this.value = ''; + } + }); + break; + } + }); }); function createNewBucket() { var bucketKey = $('#newBucketKey').val(); - var policyKey = $('#newBucketPolicyKey').val(); jQuery.post({ url: '/api/forge/oss/buckets', contentType: 'application/json', - data: JSON.stringify({ 'bucketKey': bucketKey, 'policyKey': policyKey }), + data: JSON.stringify({ 'bucketKey': bucketKey }), success: function (res) { $('#appBuckets').jstree(true).refresh(); $('#createBucketModal').modal('toggle'); @@ -96,8 +121,7 @@ function autodeskCustomMenu(autodeskNode) { uploadFile: { label: "Upload file", action: function () { - var treeNode = $('#appBuckets').jstree(true).get_selected(true)[0]; - uploadFile(treeNode); + uploadFile(); }, icon: 'glyphicon glyphicon-cloud-upload' } @@ -120,30 +144,8 @@ function autodeskCustomMenu(autodeskNode) { return items; } -function uploadFile(node) { +function uploadFile() { $('#hiddenUploadField').click(); - $('#hiddenUploadField').change(function () { - if (this.files.length == 0) return; - var file = this.files[0]; - switch (node.type) { - case 'bucket': - var formData = new FormData(); - formData.append('fileToUpload', file); - formData.append('bucketKey', node.id); - - $.ajax({ - url: '/api/forge/oss/objects', - data: formData, - processData: false, - contentType: false, - type: 'POST', - success: function (data) { - $('#appBuckets').jstree(true).refresh_node(node); - } - }); - break; - } - }); } function translateObject(node) { diff --git a/src/main/webapp/js/ForgeViewer.js b/src/main/webapp/js/ForgeViewer.js index 9976f97..e8cc696 100644 --- a/src/main/webapp/js/ForgeViewer.js +++ b/src/main/webapp/js/ForgeViewer.js @@ -1,21 +1,3 @@ -///////////////////////////////////////////////////////////////////// -// Copyright (c) Autodesk, Inc. All rights reserved -// Written by Forge Partner Development -// -// Permission to use, copy, modify, and distribute this software in -// object code form for any purpose and without fee is hereby granted, -// provided that the above copyright notice appears in all copies and -// that both that copyright notice and the limited warranty and -// restricted rights notice below appear in all supporting -// documentation. -// -// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS. -// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF -// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC. -// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE -// UNINTERRUPTED OR ERROR FREE. -///////////////////////////////////////////////////////////////////// - var viewer; function launchViewer(urn) { @@ -25,7 +7,7 @@ function launchViewer(urn) { }; Autodesk.Viewing.Initializer(options, () => { - viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('forgeViewer')); + viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('forgeViewer'), { extensions: [ 'Autodesk.DocumentBrowser'] }); viewer.start(); var documentId = 'urn:' + urn; Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure); @@ -39,8 +21,8 @@ function onDocumentLoadSuccess(doc) { }); } -function onDocumentLoadFailure(viewerErrorCode) { - console.error('onDocumentLoadFailure() - errorCode:' + viewerErrorCode); +function onDocumentLoadFailure(viewerErrorCode, viewerErrorMsg) { + console.error('onDocumentLoadFailure() - errorCode:' + viewerErrorCode + '\n- errorMessage:' + viewerErrorMsg); } function getForgeToken(callback) { From 8f1ffa80a49737f5dc4c7f8974a857621bba43b7 Mon Sep 17 00:00:00 2001 From: xiaodongliang Date: Tue, 3 Aug 2021 16:01:49 +0800 Subject: [PATCH 2/2] fix an issue of param --- src/main/java/oss.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/oss.java b/src/main/java/oss.java index ff1d98d..3d4faef 100644 --- a/src/main/java/oss.java +++ b/src/main/java/oss.java @@ -42,7 +42,8 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se if (id.equals("#")) {// root BucketsApi bucketsApi = new BucketsApi(); - ApiResponse buckets = bucketsApi.getBuckets("us", 100, "abc", forgeOAuth, + //replace the first param with other values if it is other region, such as 'emea' + ApiResponse buckets = bucketsApi.getBuckets("us", 100, null, forgeOAuth, forgeOAuth.getCredentials()); JSONArray bucketsArray = new JSONArray();