Package org.jets3t.service.model.cloudfront

Examples of org.jets3t.service.model.cloudfront.Distribution


        }
       
        public void controlReturned(SimpleHandler childHandler) {
            DistributionConfig config =
                ((DistributionConfigHandler) childHandler).getDistributionConfig();
            this.distribution = new Distribution(id, status,
                lastModifiedTime, domainName, config);
        }
View Full Code Here


        public void endEnabled(String text) {
            this.enabled = "true".equalsIgnoreCase(text);
        }

        public void endDistributionSummary(String text) {
            this.distribution = new Distribution(id, status,
                lastModifiedTime, domainName, origin,
                (String[]) cnamesList.toArray(new String[cnamesList.size()]),
                comment, enabled);
            returnControlToParentHandler();
        }
View Full Code Here

        if (e.getSource().equals(distributionListTable.getSelectionModel())) {
            int tableIndex = distributionListTable.getSelectedRow();               
            if (tableIndex < 0) {
                return;
            }
            Distribution distribution = distributionListTableModel.getDistributionAtRow(
                distributionListTableModelSorter.modelIndex(tableIndex));
           
            if (distribution == null) {
                // Special case, allow the creation of a new distribution.
                deleteButton.setEnabled(false);
               
                bucketComboBox.setEnabled(true);
                enabledCheckbox.setSelected(false);
                cnamesTableModel.removeAll();
                commentTextArea.setText("");
               
                actionButton.setText("New Distribution");
                actionButton.setActionCommand("NewDistribution");
                actionButton.setEnabled(true);
            } else {
                bucketComboBox.setSelectedItem(distribution.getOriginAsBucketName());
                bucketComboBox.setEnabled(false);
                enabledCheckbox.setSelected(distribution.isEnabled());
               
                cnamesTableModel.removeAll();
                String[] cnames = distribution.getCNAMEs();
                for (int i = 0; i < cnames.length; i++) {
                    cnamesTableModel.addCname(cnames[i]);
                }
                commentTextArea.setText(distribution.getComment());
               
                // Update possible actions
                deleteButton.setEnabled(!distribution.isEnabled() && distribution.isDeployed());
               
                actionButton.setText("Update Distribution");
                actionButton.setActionCommand("UpdateDistribution");
                actionButton.setEnabled(distribution.isDeployed());
            }
        } else if (e.getSource().equals(cnamesTable.getSelectionModel())) {
            removeCname.setEnabled(cnamesTable.getSelectedRowCount() != 0);
        }
    }
View Full Code Here

        } else if (event.getActionCommand().equals("RemoveCname")) {
            cnamesTableModel.removeRow(cnamesTable.getSelectedRow());
        } else if (event.getActionCommand().equals("RefreshDistributions")) {
            refreshDistributions();
        } else if (event.getActionCommand().equals("DeleteDistribution")) {
            final Distribution distribution = distributionListTableModel.getDistributionAtRow(
                distributionListTableModelSorter.modelIndex(
                    distributionListTable.getSelectedRow()));
           
            int answer = JOptionPane.showConfirmDialog(this,
                "Delete the distribution " + distribution.getDomainName() + "?",
                "Delete Distribution", JOptionPane.YES_NO_OPTION);
            if (answer == 1) { // NO
                return;
            } else {
                (new Thread() {
                    public void run() {
                        final ProgressDialog progressDialog =
                            new ProgressDialog(ownerFrame, "Deleting Distribution", null);
                       
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                progressDialog.startDialog("Deleting distribution: " + distribution.getDomainName(),
                                    null, 0, 0, null, null);                              
                            }
                         });

                        try {
                            cloudFrontService.deleteDistribution(distribution.getId());
                            refreshDistributions();
                        } catch (Exception e) {
                            SwingUtilities.invokeLater(new Runnable() {
                                public void run() {
                                    progressDialog.stopDialog();
                                }
                             });
                           
                            String errorMessage = "Failed to delete distribution";
                            if (e instanceof CloudFrontServiceException) {
                                errorMessage = ((CloudFrontServiceException)e).getErrorMessage();
                            }                       
                            ErrorDialog.showDialog(ownerFrame, null, errorMessage, e);
                        }
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                progressDialog.stopDialog();
                            }
                         });
                    }
                }).start();
            }
        } else if (event.getActionCommand().equals("NewDistribution")) {
            final String origin = bucketComboBox.getSelectedItem() + ".s3.amazonaws.com";
           
            (new Thread() {
                public void run() {
                    final ProgressDialog progressDialog =
                        new ProgressDialog(ownerFrame, "Creating Distribution", null);
                   
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            progressDialog.startDialog("Creating distribution for: " + bucketComboBox.getSelectedItem(),
                                null, 0, 0, null, null);                              
                        }
                     });

                    try {
                        cloudFrontService.createDistribution(origin, null,
                            cnamesTableModel.getCnames(), commentTextArea.getText(), enabledCheckbox.isSelected());
                        refreshDistributions();
                    } catch (Exception e) {
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                progressDialog.stopDialog();
                            }
                         });

                        String errorMessage = "Failed to create distribution";
                        if (e instanceof CloudFrontServiceException) {
                            errorMessage = ((CloudFrontServiceException)e).getErrorMessage();
                        }                       
                        ErrorDialog.showDialog(ownerFrame, null, errorMessage, e);
                    }
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            progressDialog.stopDialog();
                        }
                     });
                }
            }).start();
        } else if (event.getActionCommand().equals("UpdateDistribution")) {
            final Distribution distribution = distributionListTableModel.getDistributionAtRow(
                distributionListTableModelSorter.modelIndex(
                    distributionListTable.getSelectedRow()));
           
            (new Thread() {
                public void run() {
                    final ProgressDialog progressDialog =
                        new ProgressDialog(ownerFrame, "Updating Distribution", null);
                   
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            progressDialog.startDialog("Updating distribution: " + distribution.getDomainName(),
                                null, 0, 0, null, null);                              
                        }
                     });

                    try {
                        cloudFrontService.updateDistributionConfig(distribution.getId(),
                            cnamesTableModel.getCnames(), commentTextArea.getText(), enabledCheckbox.isSelected());
                        refreshDistributions();
                    } catch (Exception e) {
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
View Full Code Here

    public void testCreateUpdatePublicDistribution() throws Exception {
        // Create a new public distribution
        String callerId = "test-" + System.currentTimeMillis(); // Caller reference - a unique string value
        String comment = "Testing";
        String[] cnames = new String[] {callerId + this.originBucket}; // CNAME aliases for distribution
        Distribution distribution = getService().createDistribution(
            new S3Origin(this.originBucket),
            callerId,
            cnames,
            comment,
            false,  // Distribution is enabled?
            null  // Logging status of distribution (null means disabled)
            );

        // Check distribution info
        assertNotNull(distribution.getId());
        assertNotNull(distribution.getDomainName());
        assertNotNull(distribution.getLastModifiedTime());
        assertEquals("InProgress", distribution.getStatus());
        assertEquals(0, distribution.getActiveTrustedSigners().size());
        // Check distribution config info
        DistributionConfig config = distribution.getConfig();
        assertEquals(callerId, config.getCallerReference());
        assertEquals(comment, config.getComment());
        assertEquals(false, config.isEnabled());
        assertEquals(Arrays.asList(cnames), Arrays.asList(config.getCNAMEs()));
        assertEquals(1, config.getOrigins().length);
        assertEquals(S3Origin.class, config.getOrigins()[0].getClass());
        S3Origin origin = (S3Origin) config.getOrigins()[0];
        assertEquals("default-origin-id", origin.getId());
        assertEquals(originBucket, origin.getDomainName());
        assertNull(origin.getOriginAccessIdentity());
        assertEquals(originBucket.split("\\.")[0], origin.getOriginAsBucketName());
        // Check cache behaviors
        CacheBehavior defaultCacheBehavior = config.getDefaultCacheBehavior();
        assertNull(defaultCacheBehavior.getPathPattern());
        assertEquals(origin.getId(), defaultCacheBehavior.getTargetOriginId());
        assertEquals(false, defaultCacheBehavior.isForwardQueryString());
        assertEquals(Long.valueOf(0), defaultCacheBehavior.getMinTTL());
        assertEquals(0, defaultCacheBehavior.getTrustedSignerAwsAccountNumbers().length);
        assertEquals(ViewerProtocolPolicy.ALLOW_ALL, defaultCacheBehavior.getViewerProtocolPolicy());
        // Check legacy distribution info (pre 2012-05-05 API version)
        assertEquals(comment, distribution.getComment());
        assertEquals(Arrays.asList(cnames), Arrays.asList(distribution.getCNAMEs()));
        assertEquals(false, distribution.isEnabled());
        assertTrue(distribution.getOrigin() instanceof S3Origin);
        origin = (S3Origin) distribution.getOrigin();

        // Update distribution to enable it, add a CNAME, update comment, enable logging,
        // set default root object, set default cache behavior, add additional cache behavior
        cnames = new String[] {callerId + originBucket, callerId + "2" + originBucket};
        comment = "Updated comment";
        LoggingStatus logging = new LoggingStatus("log-bucket.s3.amazonaws.com", "log-prefix/");
        DistributionConfig testDistributionConfig = new DistributionConfig(
            distribution.getConfig().getOrigins(),
            distribution.getConfig().getCallerReference(),
            cnames,
            comment,
            true, // Enabled
            logging,
            "index.html", // defaultRootObject
            // defaultCacheBehavior
            new CacheBehavior(
                distribution.getConfig().getOrigins()[0].getId(),
                false, // isForwardQueryString
                new String[] {"self"}, // trustedSignerAwsAccountNumbers
                ViewerProtocolPolicy.HTTPS_ONLY,
                3600l // minTTL
                ),
            // Additional cache behavior
            new CacheBehavior[] {
                new CacheBehavior(
                    "/https-only-path"// pathPattern
                    distribution.getConfig().getOrigins()[0].getId(),
                    true, // isForwardQueryString
                    null, // trustedSignerAwsAccountNumbers
                    ViewerProtocolPolicy.ALLOW_ALL,
                    1800l // minTTL
                    )}
            );
        config = getService().updateDistributionConfig(
            distribution.getId(), testDistributionConfig);

        // Check distribution config info
        assertEquals(testDistributionConfig.getCallerReference(), config.getCallerReference());
        assertEquals(testDistributionConfig.getComment(), config.getComment());
        assertEquals(testDistributionConfig.isEnabled(), config.isEnabled());
View Full Code Here

            System.out.println("Bucket distribution " + (i + 1) + ": " + bucketDistributions[i]);
        }

        // Create a new public distribution
        String originBucket = "jets3t.s3.amazonaws.com";
        Distribution newDistribution = cloudFrontService.createDistribution(
            new S3Origin(originBucket),
            "" + System.currentTimeMillis(), // Caller reference - a unique string value
            new String[] {"test1.jamesmurty.com"}, // CNAME aliases for distribution
            "Testing", // Comment
            true,  // Distribution is enabled?
            null  // Logging status of distribution (null means disabled)
            );
        System.out.println("New Distribution: " + newDistribution);

        // The ID of the new distribution we will use for testing
        String testDistributionId = newDistribution.getId();

        // List information about a distribution
        Distribution distribution = cloudFrontService.getDistributionInfo(testDistributionId);
        System.out.println("Distribution: " + distribution);

        // List configuration information about a distribution
        DistributionConfig distributionConfig = cloudFrontService.getDistributionConfig(testDistributionId);
        System.out.println("Distribution Config: " + distributionConfig);

        // Update a distribution's configuration to add an extra CNAME alias and enable logging.
        DistributionConfig updatedDistributionConfig = cloudFrontService.updateDistributionConfig(
            testDistributionId,
            null, // origin -- null for no changes
            new String[] {"test1.jamesmurty.com", "test2.jamesmurty.com"}, // CNAME aliases for distribution
            "Another comment for testing", // Comment
            true, // Distribution enabled?
            new LoggingStatus("log-bucket.s3.amazonaws.com", "log-prefix/"// Distribution logging
            );
        System.out.println("Updated Distribution Config: " + updatedDistributionConfig);

        // Update a distribution's configuration to require secure HTTPS
        // connections, using the RequiredProtocols feature
        updatedDistributionConfig = cloudFrontService.updateDistributionConfig(
            testDistributionId,
            null, // origin -- null for no changes
            new String[] {"test1.jamesmurty.com", "test2.jamesmurty.com"}, // CNAME aliases for distribution
            "HTTPS Only!", // Comment
            true, // Distribution enabled?
            new LoggingStatus("log-bucket.s3.amazonaws.com", "log-prefix/")// Distribution logging
            false, // URLs self-signing disabled
            null,  // No other AWS users can sign URLs
            new String[] {"https"}, // RequiredProtocols with HTTPS protocol
            "index.html" // Default Root Object
        );
        System.out.println("HTTPS only distribution Config: " + updatedDistributionConfig);

        // Update a distribution's configuration to change the time-to-live (MinTTL) setting.
        updatedDistributionConfig.setMinTTL(5L)// Set TTL to 5 seconds
        updatedDistributionConfig = cloudFrontService.updateDistributionConfig(
            testDistributionId, updatedDistributionConfig);
        System.out.println("Distribution Config with custom MinTTL: " + updatedDistributionConfig);

        // Disable a distribution, e.g. so that it may be deleted.
        // The CloudFront service may take some time to disable and deploy the distribution.
        DistributionConfig disabledDistributionConfig = cloudFrontService.updateDistributionConfig(
            testDistributionId, null, new String[] {}, "Deleting distribution", false, null);
        System.out.println("Disabled Distribution Config: " + disabledDistributionConfig);

        // Check whether a distribution is deployed
        distribution = cloudFrontService.getDistributionInfo(testDistributionId);
        System.out.println("Distribution is deployed? " + distribution.isDeployed());

        // Convenience method to disable a distribution prior to deletion
        cloudFrontService.disableDistributionForDeletion(testDistributionId);

        // Delete a distribution (the distribution must be disabled and deployed first)
        cloudFrontService.deleteDistribution(testDistributionId);

        // -----------------------------------------------------------
        // CloudFront Private Distributions - Origin Access Identities
        // -----------------------------------------------------------

        // Create a new origin access identity
        OriginAccessIdentity originAccessIdentity =
            cloudFrontService.createOriginAccessIdentity(null, "Testing");
        System.out.println(originAccessIdentity.toString());

        // List your origin access identities
        List<OriginAccessIdentity> originAccessIdentityList =
            cloudFrontService.getOriginAccessIdentityList();
        System.out.println(originAccessIdentityList);

        // Obtain an origin access identity ID for future use
        OriginAccessIdentity identity = originAccessIdentityList.get(1);
        String originAccessIdentityId = identity.getId();
        System.out.println("originAccessIdentityId: " + originAccessIdentityId);

        // Lookup information about a specific origin access identity
        originAccessIdentity =
            cloudFrontService.getOriginAccessIdentity(originAccessIdentityId);
        System.out.println(originAccessIdentity);

        // Lookup config details for an origin access identity
        OriginAccessIdentityConfig originAccessIdentityConfig =
            cloudFrontService.getOriginAccessIdentityConfig(originAccessIdentityId);
        System.out.println(originAccessIdentityConfig);

        // Update configuration for an origin access identity
        OriginAccessIdentityConfig updatedConfig =
            cloudFrontService.updateOriginAccessIdentityConfig(
                originAccessIdentityId, "New Comment");
        System.out.println(updatedConfig);

        // Delete an origin access identity
        cloudFrontService.deleteOriginAccessIdentity(originAccessIdentityId);

        // --------------------------------------------------------
        // CloudFront Private Distributions - Private Distributions
        // --------------------------------------------------------

        // Create a new private distribution for which signed URLs are *not* required
        originBucket = "jets3t.s3.amazonaws.com";
        Distribution privateDistribution = cloudFrontService.createDistribution(
            new S3Origin(originBucket, originAccessIdentityId),
            "" + System.currentTimeMillis(), // Caller reference - a unique string value
            new String[] {}, // CNAME aliases for distribution
            "New private distribution -- URL signing not required", // Comment
            true,  // Distribution is enabled?
            null,  // Logging status of distribution (null means disabled)
            false, // URLs self-signing disabled
            null,  // No other AWS users can sign URLs
            null,   // No required protocols
            null // No default root object
        );
        System.out.println("New Private Distribution: " + privateDistribution);

        // Update an existing distribution to make it private and require URL signing
        updatedDistributionConfig = cloudFrontService.updateDistributionConfig(
            testDistributionId,
            new S3Origin(originBucket, originAccessIdentityId),
            new String[] {}, // CNAME aliases for distribution
            "Now a private distribution -- URL Signing required", // Comment
            true, // Distribution enabled?
            null, // No distribution logging
            true, // URLs can be self-signed
            null, // No other AWS users can sign URLs
            null,  // No required protocols
            "index.html" //Default Root Object
        );
        System.out.println("Made distribution private: " + updatedDistributionConfig);


        // List active trusted signers for a private distribution
        distribution = cloudFrontService.getDistributionInfo(testDistributionId);
        System.out.println("Active trusted signers: " + distribution.getActiveTrustedSigners());

        // Obtain one of your own (Self) keypair ids that can sign URLs for the distribution
        List selfKeypairIds = (List) distribution.getActiveTrustedSigners().get("Self");
        String keyPairId = (String) selfKeypairIds.get(0);
        System.out.println("Keypair ID: " + keyPairId);

        // -------------------------------------------------------------------------
        // CloudFront Private Distributions - Signed URLs for a private distribution
        // -------------------------------------------------------------------------

        String distributionDomain = "a1b2c3d4e5f6g7.cloudfront.net";
        String privateKeyFilePath = "/path/to/rsa-private-key.pem";
        String s3ObjectKey = "s3/object/key.txt";
        String policyResourcePath = "http://" + distributionDomain + "/" + s3ObjectKey;

        // Convert an RSA PEM private key file to DER bytes
        byte[] derPrivateKey = EncryptionUtil.convertRsaPemToDer(
            new FileInputStream(privateKeyFilePath));


        // Generate a "canned" signed URL to allow access to a specific distribution and object
        String signedUrlCanned = CloudFrontService.signUrlCanned(
            "http://" + distributionDomain + "/" + s3ObjectKey, // Resource URL or Path
            keyPairId,     // Certificate identifier, an active trusted signer for the distribution
            derPrivateKey, // DER Private key data
            ServiceUtils.parseIso8601Date("2009-11-14T22:20:00.000Z") // DateLessThan
            );
        System.out.println(signedUrlCanned);


        // Build a policy document to define custom restrictions for a signed URL
        String policy = CloudFrontService.buildPolicyForSignedUrl(
            policyResourcePath, // Resource path (optional, may include '*' and '?' wildcards)
            ServiceUtils.parseIso8601Date("2009-11-14T22:20:00.000Z"), // DateLessThan
            "0.0.0.0/0", // CIDR IP address restriction (optional, 0.0.0.0/0 means everyone)
            ServiceUtils.parseIso8601Date("2009-10-16T06:31:56.000Z"// DateGreaterThan (optional)
            );

        // Generate a signed URL using a custom policy document
        String signedUrl = CloudFrontService.signUrl(
            "http://" + distributionDomain + "/" + s3ObjectKey, // Resource URL or Path
            keyPairId,     // Certificate identifier, an active trusted signer for the distribution
            derPrivateKey, // DER Private key data
            policy // Access control policy
            );
        System.out.println(signedUrl);

        // ------------------------------------------------------------
        // CloudFront Streaming Distributions
        //
        // The methods for interacting with streaming distributions are
        // very similar to those for standard distributions
        // ------------------------------------------------------------

        // List your streaming distributions
        StreamingDistribution[] streamingDistributions =
            cloudFrontService.listStreamingDistributions();
        for (int i = 0; i < streamingDistributions.length; i++) {
            System.out.println("Streaming distribution " + (i + 1) + ": " + streamingDistributions[i]);
        }

        // Create a new streaming distribution
        String streamingBucket = "jets3t-streaming.s3.amazonaws.com";
        StreamingDistribution newStreamingDistribution = cloudFrontService.createStreamingDistribution(
            new S3Origin(streamingBucket),
            "" + System.currentTimeMillis(), // Caller reference - a unique string value
            null, // CNAME aliases for distribution
            "Test streaming distribution", // Comment
            true,  // Distribution is enabled?
            null   // Logging status
            );
        System.out.println("New Streaming Distribution: " + newStreamingDistribution);

        // Streaming distributions can be made private just like standard non-streaming
        // distributions. Create a new private streaming distribution for which signed
        // URLs are *not* required
        StreamingDistribution newPrivateStreamingDistribution =
            cloudFrontService.createStreamingDistribution(
                new S3Origin(streamingBucket, originAccessIdentityId),
                "" + System.currentTimeMillis(), // Caller reference - a unique string value
                new String[] {}, // CNAME aliases for distribution
                "New private streaming distribution -- URL signing not required", // Comment
                true, // Distribution is enabled?
                null, // Logging status
                true, // URLs self-signing enabled
                null // No other AWS users can sign URLs
        );
        System.out.println("New Private Streaming Distribution: " + newPrivateStreamingDistribution);

        // The ID of the streaming distribution we will use for testing
        String testStreamingDistributionId = newStreamingDistribution.getId();

        // List information about a streaming distribution
        StreamingDistribution streamingDistribution =
            cloudFrontService.getStreamingDistributionInfo(testStreamingDistributionId);
        System.out.println("Streaming Distribution: " + streamingDistribution);

        // List configuration information about a streaming distribution
        StreamingDistributionConfig streamingDistributionConfig =
            cloudFrontService.getStreamingDistributionConfig(testStreamingDistributionId);
        System.out.println("Streaming Distribution Config: " + streamingDistributionConfig);

        // Update a streaming distribution's configuration to add an extra CNAME alias
        // and to enable access logging -- logs will be written to '
        StreamingDistributionConfig updatedStreamingDistributionConfig =
            cloudFrontService.updateStreamingDistributionConfig(
                testStreamingDistributionId,
                null, // origin -- null for no changes
                new String[] {"cname.jets3t-streaming.com"}, // CNAME aliases for distribution
                "Updated this streaming distribution", // Comment
                true, // Distribution enabled?
                new LoggingStatus("jets3t-streaming-logs.s3.amazonaws.com", "sdlog-") // Logging
                );
        System.out.println("Updated Streaming Distribution Config: "
            + updatedStreamingDistributionConfig);

        // Disable a streaming distribution, e.g. so that it may be deleted.
        // The CloudFront service may take some time to disable and deploy the distribution.
        StreamingDistributionConfig disabledStreamingDistributionConfig =
            cloudFrontService.updateStreamingDistributionConfig(
                testStreamingDistributionId,
                null, // origin -- null for no changes
                new String[] {}, "Deleting distribution",
                false, // Distribution enabled?
                null   // Logging status
                );
        System.out.println("Disabled Streaming Distribution Config: "
            + disabledStreamingDistributionConfig);

        // Check whether a streaming distribution is deployed
        StreamingDistribution streamingDistributionCheck =
            cloudFrontService.getStreamingDistributionInfo(testStreamingDistributionId);
        System.out.println("Streaming Distribution is deployed? "
            + streamingDistributionCheck.isDeployed());

        // Convenience method to disable a streaming distribution prior to deletion
        cloudFrontService.disableStreamingDistributionForDeletion(testStreamingDistributionId);

        // Delete a streaming distribution (the distribution must be disabled and deployed first)
        cloudFrontService.deleteStreamingDistribution(testStreamingDistributionId);

        // ------------------------------------------------------------
        // Object Invalidation
        // ------------------------------------------------------------

        // Invalidate objects in a distribution to force CloudFront to fetch the
        // latest object data from the S3 origin.
        String[] objectKeys = new String[] {"downloads.html"};

        Invalidation invalidation = cloudFrontService.invalidateObjects(
            testDistributionId,
            objectKeys,
            "" + System.currentTimeMillis() // Caller reference - a unique string value
            );
        System.out.println(invalidation);

        // Retrieve details about a prior invalidation operation
        String invalidationId = invalidation.getId();

        Invalidation priorInvalidation = cloudFrontService.getInvalidation(
            testDistributionId, invalidationId);
        System.out.println(priorInvalidation);

        // List summary information about all invalidations performed
        // on a distribution.
        List<InvalidationSummary> invalidationSummaries =
            cloudFrontService.listInvalidations(testDistributionId);
        System.out.println(invalidationSummaries);

        // ------------------------------------------------------------
        // Non-S3 origin
        // ------------------------------------------------------------

        // Create a new distribution with a non-S3 (custom) origin
        CustomOrigin customOrigin = new CustomOrigin(
            "www.jamesmurty.com", // DNS name
            CustomOrigin.OriginProtocolPolicy.HTTP_ONLY  // Access content over HTTP only
            // To distribute content over HTTPS use:
            // CustomOrigin.OriginProtocolPolicy.MATCH_VIEWER
            );

        Distribution customOriginDistribution = cloudFrontService.createDistribution(
            customOrigin,
            "" + System.currentTimeMillis(), // Caller reference - a unique string value
            null, // CNAME aliases for distribution
            "Distribution with a non-S3 origin", // Comment
            true,  // Distribution is enabled?
View Full Code Here

        if (e.getSource().equals(distributionListTable.getSelectionModel())) {
            int tableIndex = distributionListTable.getSelectedRow();
            if (tableIndex < 0) {
                return;
            }
            Distribution distribution = distributionListTableModel.getDistributionAtRow(
                distributionListTableModelSorter.modelIndex(tableIndex));

            if (distribution == null) {
                // Special case, allow the creation of a new distribution.
                deleteButton.setEnabled(false);

                bucketComboBox.setEnabled(true);
                enabledCheckbox.setSelected(false);
                httpsOnlyCheckbox.setEnabled(false);
                defaultRootObjectTextField.setText("");
                minTTLTextField.setText("");

                loggingBucketComboBox.setSelectedIndex(0);
                loggingPrefixTextField.setText("");

                cnamesTableModel.removeAll();
                commentTextArea.setText("");

                actionButton.setText("New Distribution");
                actionButton.setActionCommand("NewDistribution");
                actionButton.setEnabled(true);
            } else {
                // Retrieve distribution's configuration to access current logging status settings.
                DistributionConfig distributionConfig = null;
                try {
                    distributionConfig = cloudFrontService.getDistributionConfig(distribution.getId());
                } catch (CloudFrontServiceException ex) {
                    String message = "Unable to retrieve configuration information "
                        + "for distribution: " + distribution.getId();
                    ErrorDialog.showDialog(ownerFrame, this, message, ex);
                    return;
                }

                if (distribution.getOrigin() instanceof S3Origin) {
                    bucketComboBox.setSelectedItem(
                        ((S3Origin)distribution.getOrigin()).getOriginAsBucketName());
                }
                bucketComboBox.setEnabled(false);
                enabledCheckbox.setSelected(distribution.isEnabled());
                httpsOnlyCheckbox.setSelected(distributionConfig.isHttpsProtocolRequired());
                defaultRootObjectTextField.setText(distributionConfig.getDefaultRootObject());
                if (distributionConfig.isStreamingDistributionConfig()) {
                    minTTLTextField.setEnabled(false);
                    minTTLTextField.setText("N/A");
                } else {
                    minTTLTextField.setEnabled(true);
                    Long minTTL = distributionConfig.getMinTTL();
                    if (minTTL == null) {
                        minTTLTextField.setText("0");
                    } else {
                        minTTLTextField.setText(minTTL.toString());
                    }
                }

                if (distributionConfig.getLoggingStatus() != null) {
                    loggingBucketComboBox.setSelectedItem(
                        distributionConfig.getLoggingStatus().getShortBucketName());
                    loggingPrefixTextField.setText(
                        distributionConfig.getLoggingStatus().getPrefix());
                } else {
                    loggingBucketComboBox.setSelectedIndex(0);
                    loggingPrefixTextField.setText("");
                }

                cnamesTableModel.removeAll();
                String[] cnames = distribution.getCNAMEs();
                for (int i = 0; i < cnames.length; i++) {
                    cnamesTableModel.addCname(cnames[i]);
                }
                commentTextArea.setText(distribution.getComment());

                // Update possible actions
                deleteButton.setEnabled(!distribution.isEnabled() && distribution.isDeployed());

                actionButton.setText("Update Distribution");
                actionButton.setActionCommand("UpdateDistribution");
                actionButton.setEnabled(distribution.isDeployed());
            }
        } else if (e.getSource().equals(cnamesTable.getSelectionModel())) {
            removeCname.setEnabled(cnamesTable.getSelectedRowCount() != 0);
        }
    }
View Full Code Here

        } else if (event.getActionCommand().equals("RemoveCname")) {
            cnamesTableModel.removeRow(cnamesTable.getSelectedRow());
        } else if (event.getActionCommand().equals("RefreshDistributions")) {
            refreshDistributions();
        } else if (event.getActionCommand().equals("DeleteDistribution")) {
            final Distribution distribution = distributionListTableModel.getDistributionAtRow(
                distributionListTableModelSorter.modelIndex(
                    distributionListTable.getSelectedRow()));

            int answer = JOptionPane.showConfirmDialog(this,
                "Delete the distribution " + distribution.getDomainName() + "?",
                "Delete Distribution", JOptionPane.YES_NO_OPTION);
            if (answer == 1) { // NO
                return;
            } else {
                (new Thread() {
                    @Override
                    public void run() {
                        final ProgressDialog progressDialog =
                            new ProgressDialog(ownerFrame, "Deleting Distribution", null);

                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                progressDialog.startDialog("Deleting distribution: " + distribution.getDomainName(),
                                    null, 0, 0, null, null);
                            }
                         });

                        try {
                            cloudFrontService.deleteDistribution(distribution.getId());
                            refreshDistributions();
                        } catch (Exception e) {
                            SwingUtilities.invokeLater(new Runnable() {
                                public void run() {
                                    progressDialog.stopDialog();
                                }
                             });

                            String errorMessage = "Failed to delete distribution";
                            if (e instanceof CloudFrontServiceException) {
                                errorMessage = ((CloudFrontServiceException)e).getErrorMessage();
                            }
                            ErrorDialog.showDialog(ownerFrame, null, errorMessage, e);
                        }
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                progressDialog.stopDialog();
                            }
                         });
                    }
                }).start();
            }
        } else if (event.getActionCommand().equals("NewDistribution")) {
            final String bucketName = bucketComboBox.getSelectedItem() + ".s3.amazonaws.com";

            (new Thread() {
                @Override
                public void run() {
                    final ProgressDialog progressDialog =
                        new ProgressDialog(ownerFrame, "Creating Distribution", null);

                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            progressDialog.startDialog("Creating distribution for: " + bucketComboBox.getSelectedItem(),
                                null, 0, 0, null, null);
                        }
                     });

                    try {
                        LoggingStatus loggingStatus = null;
                        if (loggingBucketComboBox.getSelectedIndex() > 0) {
                            String loggingBucket = (String) loggingBucketComboBox.getSelectedItem()
                                + CloudFrontService.DEFAULT_BUCKET_SUFFIX;
                            loggingStatus = new LoggingStatus(
                                    loggingBucket,
                                    loggingPrefixTextField.getText());
                        }

                        String[] requiredProtocols = null;
                        if (httpsOnlyCheckbox.isSelected()) {
                            requiredProtocols = new String[] {"https"};
                        } else {
                            requiredProtocols = new String[0];
                        }

                        String defaultRootObject = defaultRootObjectTextField.getText();
                        if (defaultRootObject.length() == 0) {
                            defaultRootObject = null;
                        }

                        Long minTTL = null;
                        if (minTTLTextField.isEnabled()) {
                            try {
                                minTTL = new Long(minTTLTextField.getText());
                            } catch (NumberFormatException e) {}
                            if (minTTL == null || minTTL < 0) {
                                throw new Exception("Minimum TTL must be an integer value 0 or greater");
                            }
                        }

                        cloudFrontService.createDistribution(
                            new S3Origin(bucketName), null,
                            cnamesTableModel.getCnames(), commentTextArea.getText(),
                            enabledCheckbox.isSelected(), loggingStatus,
                            false, // trustedSignerSelf
                            null,  // trustedSignerAwsAccountNumbers
                            requiredProtocols,
                            defaultRootObject,
                            minTTL);
                        refreshDistributions();
                    } catch (Exception e) {
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                progressDialog.stopDialog();
                            }
                         });

                        String errorMessage = "Failed to create distribution";
                        if (e instanceof CloudFrontServiceException) {
                            errorMessage = ((CloudFrontServiceException)e).getErrorMessage();
                        }
                        ErrorDialog.showDialog(ownerFrame, null, errorMessage, e);
                    }
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            progressDialog.stopDialog();
                        }
                     });
                }
            }).start();
        } else if (event.getActionCommand().equals("UpdateDistribution")) {
            final Distribution distribution = distributionListTableModel.getDistributionAtRow(
                distributionListTableModelSorter.modelIndex(
                    distributionListTable.getSelectedRow()));

            (new Thread() {
                @Override
                public void run() {
                    final ProgressDialog progressDialog =
                        new ProgressDialog(ownerFrame, "Updating Distribution", null);

                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            progressDialog.startDialog("Updating distribution: " + distribution.getDomainName(),
                                null, 0, 0, null, null);
                        }
                     });

                    try {
                        LoggingStatus loggingStatus = null;
                        if (loggingBucketComboBox.getSelectedIndex() > 0) {
                            String loggingBucket = (String) loggingBucketComboBox.getSelectedItem()
                                + CloudFrontService.DEFAULT_BUCKET_SUFFIX;
                            loggingStatus = new LoggingStatus(
                                    loggingBucket,
                                    loggingPrefixTextField.getText());
                        }

                        String[] requiredProtocols = null;
                        if (httpsOnlyCheckbox.isSelected()) {
                            requiredProtocols = new String[] {"https"};
                        } else {
                            requiredProtocols = new String[0];
                        }

                        String defaultRootObject = defaultRootObjectTextField.getText();
                        if (defaultRootObject.length() == 0) {
                            defaultRootObject = null;
                        }

                        Long minTTL = null;
                        if (minTTLTextField.isEnabled()) {
                            try {
                                minTTL = new Long(minTTLTextField.getText());
                            } catch (NumberFormatException e) {}
                            if (minTTL == null || minTTL < 0) {
                                throw new Exception("Minimum TTL must be an integer value 0 or greater");
                            }
                        }

                        cloudFrontService.updateDistributionConfig(distribution.getId(),
                            null, // origin
                            cnamesTableModel.getCnames(), commentTextArea.getText(),
                            enabledCheckbox.isSelected(), loggingStatus,
                            false, // trustedSignerSelf
                            null,  // trustedSignerAwsAccountNumbers
View Full Code Here

TOP

Related Classes of org.jets3t.service.model.cloudfront.Distribution

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.