Archive for November, 2011

“Failure in Loader: VerifyError: Error #1014″ within the Composite Application Framework (Mosaic)

The error, Failure in Loader: VerifyError: Error #1014″, within the Composite Application Framework (Mosaic) can be caused by the presence of a non-interface class within the interface library that defines a service within Mosaic. Service interfaces should not use non-interface classes as arguments or results. For example, if a service that is being implemented returns an ArrayCollection, the result should be specified in the interface as IList. Creating an interface with an ArrayCollection in its definition will cause other tiles to throw this exception.

See also:
Adobe Forums post about this error
Create a composite application: create a service

Appending values to collections within Process Management orchestrations

Within the Process Management module for ADEP Document Services or LiveCycle, values returned from services, if not explicitly XML or primitives, are Java-based. These values, like XML in orchestrations, can be created, modified and deleted using the Set Value service or by using BeanScript within the Execute Script service.

Manipulating Java objects within BeanScript is very similar to how it works in Java. However, setting Java objects in the Set Value service can be very different. It uses XPath as its language. Values for XML behave as described within the W3C XPath specification. In addition, associating schema with XML supports functionality to add values to XML that fit a very specific object model. Though XPath is meant for querying XML, it has been purposed for setting and editing the Java elements within orchestrations as well.

There are many differences in the way Java objects are treated within the Set Value service’s XPath than XML or primitives behave. One difference is in the way items are added to collections within Java objects.

First, to create a collection, a variable must be set to be a new, empty, collection:

/process_data/myList = empty-list()

To append an item to an already existing collection, set the collection to be equal that value you wish to append:

/process_data/myList = empty-list()
/process_data/myList = "a" // collection is now ["a"]
/process_data/myList = "b" // collection is now ["a","b"]
/process_data/myList = "c" // collection is now ["a","b","c"]

To reset the value of the list, do not set it to a different collection. This only appends the collection to the existing list:

/process_data/myList = empty-list()
/process_data/myList = "a" // myList is ["a"]
/process_data/list2 = empty-list()
/process_data/list2 = "b" // list2 is ["b"]
/process_data/myList = /process_data/list2 // myList is ["a",["b"]]

To replace the value of a varible with a new list, first set the list to null:

/process_data/myList = empty-list()
/process_data/myList = "a" // myList is ["a"]
/process_data/list2 = empty-list()
/process_data/list2 = "b" // list2 is ["b"]
/process_data/myList = null
/process_data/myList = /process_data/list2 // myList is ["b"]

One big implication of this is, whenever a collection variable is set to the result of a service, if that variable is not empty the result is appended to the collection. This is sometimes desired, but can cause problems if not expected.

Moving custom digital signature appearances between computers

The custom appearances for a digital signature are kept in the security directory in the file, appearances.acrodata. The security folder for me (Windows 7 using Acrobat 10) is at [user directory]/AppData/Roaming/Adobe/Acrobat/10.0/Security.

As long the signature has been set up, moving that one file from one computer to another will move the custom appearance of the signature.

For more:
Digital Signature Appearances
Sample Signatures
Creating the signature appearance (Acrobat 9)
Adobe TV: Signing PDF Files and Creating Appearances (Acrobat 9)

503 error (service unavailable) while accessing services in CRX and CQ Quick Start

[Edited 9 July 2012 by Deke Smith: updated to no longer be specific to Experience Services]

One thing that causes this is using the wrong of Java with the server. CQ, CRX, and Experience Services requires at least version 1.6.0.26 of the JDK (Java 6 update 26). But it will not work with version 1.7 JDK (Java 7). After installing Java, confirm the environment variable, JAVA_HOME, is set to the correct JDK directory.

It is easy to see what version of Java is on the server. Within a command prompt or terminal window type:

java -version

This command returns the version of Java on the machine.

What if you want to use the CRX Quick Start AND have Java 1.7 on your machine AND don’t want to set the JAVA_HOME variable to the Java 1.6 JDK? Within the server.bat file for the Quick Start is a setting in which the path to the Java SDK can be defined. The server.bat file is at [server directory]/crx-quickstart/server/server.bat. By default, it is set to JAVA_HOME:

set JAVA_HOME=%JAVA_HOME%

It can be set to the path to another SDK:

set JAVA_HOME=c:\java\jdk1.6.0_26

For more information, see CQ Technical Requirements: Java Virtual Machines.

One just wanted to tell the computer what to do, the other wanted it to talk back

Dennis Ritchie and John McCarthy, both pioneers in computer science, died this passed October.

Unless someone tells computers what to do, they are pretty much a dumb collection of rare earth minerals, wires, silicon and plastic. But the computer’s language is the same language of a light switch. It is either on or off. And to talk to these machines in their own language is a very difficult exercise of building a structure ones and zeros in a very hardware-specific way.

What Ritchie and McCarthy had in common, besides very healthy beards, was what they accomplished. They created high level languages we humans can use to tell these boxes what to do. McCarthy create LISP and Ritchie created C. With C, Ritchie helped to create Unix.

Article: Dennis Ritchie and John McCarthy | The Economist

 

Throw it onto the Internet, but will they come?

Despite the talk of the second tech bubble, new ideas still pour out. Sometimes people gravitate towards them. And sometimes they even make money. “Coding isn’t about making money or scratching some OCD itch. It’s about doing what you love and, yes, changing the world.” More in Bubble Boys from New York Magazine.